Android基础练习

来源:互联网 发布:郑州淘宝网店加盟查封 编辑:程序博客网 时间:2024/06/07 05:13

1.自定义Toast

步骤,首先需要添加一个自定义的toast布局,然后通过构造方法实例化一个Toast对象即可

public void onToast(View view) {        //1.加载自定义布局        LayoutInflater layoutInflater = LayoutInflater.from(this);        View view1 = layoutInflater.inflate(R.layout.toast_laout, null);        //创建对象        Toast toast = new Toast(this);        //设置自定义布局        toast.setView(view1);        //设置显示时间        toast.setDuration(Toast.LENGTH_SHORT);        //设置位置        toast.setGravity(Gravity.CENTER, 0, 0);        //显示        toast.show();    }

2.移动的小球

步骤,创建一个继承自View绘图的类DrawView,获取组件并显示

DrawView.java

package com.example.movball;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/** * Created by y0n on 2017/5/9. */public class DrawView extends View{    public float currentX = 40;    public float currentY = 50;    //创建画笔    Paint p = new Paint();    public DrawView(Context context) {        super(context);    }    public DrawView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        // 设置画笔颜色        p.setColor(Color.RED);        // 绘制小圆        canvas.drawCircle(currentX, currentY, 15, p);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        //修改X,Y的属性        currentX = event.getX();        currentY = event.getY();        //通知当前组件重绘自己        invalidate();        //返回true表明已经处理该时间        return true;    }}
protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取容器        LinearLayout root = (LinearLayout) findViewById(R.id.activity_main);        //创建DrawView组件        DrawView drawView = new DrawView(this);        //设置自定义组件大小        drawView.setMinimumWidth(300);        drawView.setMinimumHeight(500);        root.addView(drawView);    }

3.打电话发短信

步骤,添加布局及控件,再使用Intent发送意图

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.phonecall.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <EditText            android:id="@+id/edt1"            android:layout_weight="3"            android:hint="在这里输入电话号码"            android:layout_width="wrap_content"            android:layout_height="wrap_content"/>        <Button            android:id="@+id/btn1"            android:layout_weight="1"            android:onClick="callphone"            android:text="打电话"            android:layout_width="wrap_content"            android:layout_height="wrap_content"/>    </LinearLayout>    <EditText        android:id="@+id/edt2"        android:hint="在这里输入短信内容"        android:lines="10"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/btn2"        android:onClick="sendsms"        android:text="发短信"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/></LinearLayout>
package com.example.phonecall;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.telephony.SmsManager;import android.view.View;import android.widget.EditText;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void callphone(View view){        //获取电话号码        EditText editText = (EditText)findViewById(R.id.edt1);        String num = editText.getText().toString();        //1.创建Intent对象,封装数据,传递数据        Intent intent = new Intent();        //2.设置打电话动作        intent.setAction(Intent.ACTION_CALL);        //3.封装数据打包到Intent中        //按照打电话的规定格式        Uri uri = Uri.parse("tel:" + num);        intent.setData(uri);        //4.根据Intent传递的动作,启动应用        startActivity(intent);    }    public void sendsms(View view){        //1.获取电话号码        EditText editText = (EditText) findViewById(R.id.edt1);        String num = editText.getText().toString();        //2.获取短信内容        EditText editText1 = (EditText)findViewById(R.id.edt2);        String content = editText1.getText().toString();        //3.获取短信管理器对象        SmsManager smsManager = SmsManager.getDefault();        //4.拆分短信        ArrayList<String> smss = smsManager.divideMessage(content);        //5.发送短信        smsManager.sendMultipartTextMessage(num,null,smss,null,null);    }}

4.ListViewBaseAdapter

listview实现方式有使用ArrayAdapter,BaseAdapter,SimpleAdapter,实现步骤大致相同,先获取数据源,然后再创建适配器,再显示到控件中

BaseAdapter例子如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.baseadapterlistview.MainActivity">    <ListView        android:id="@+id/lv"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:divider="#f00"        android:dividerHeight="2dp"        android:headerDividersEnabled="false">    </ListView></LinearLayout>

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.baseadapterlistview.MainActivity">    <ImageView        android:id="@+id/logo"        android:src="@mipmap/ic_launcher"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        />    <LinearLayout        android:paddingLeft="12dp"        android:orientation="vertical"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="5">        <TextView            android:id="@+id/title"            android:text="qqMusic"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <TextView            android:id="@+id/version"            android:text="1.0.1"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <TextView            android:id="@+id/size"            android:text="30.2M"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    </LinearLayout>    <Button        android:layout_weight="1"        android:layout_gravity="right"        android:id="@+id/uninstall"        android:text="卸载"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>
package com.example.baseadapterlistview;import android.app.Activity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Created by y0n on 2017/5/16. */public class MyListAdapter extends BaseAdapter{    private static final String TAG = "sc";    List<Map<String, Object>> list = new ArrayList<>();    Activity mactivity;    public MyListAdapter(Activity activity) {        mactivity = activity;                Map<String, Object> map = new HashMap<>();        map.put("logo", R.mipmap.ic_launcher);        map.put("title", "qqMusic");        map.put("version", "版本");        map.put("size", "大小");        Map<String, Object> map1 = new HashMap<>();        map1.put("logo", R.mipmap.ic_launcher);        map1.put("title", "百度");        map1.put("version", "版本");        map1.put("size", "大小");        Map<String, Object> map2 = new HashMap<>();        map2.put("logo", R.mipmap.ic_launcher);        map2.put("title", "阿里");        map2.put("version", "版本");        map2.put("size", "大小");        list.add(map);        list.add(map1);        list.add(map2);    }    public void InitList()    {    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        //1.获取布局加载器        LayoutInflater layoutinflater = mactivity.getLayoutInflater();        //2.获取view对象        //方式一        //View view = LayoutInflater.from(mactivity).inflate(R.layout.item,null);        //方式二        View view = layoutinflater.inflate(R.layout.item,null);        //3.获取view中的控件对象        ImageView logo = (ImageView) view.findViewById(R.id.logo);        TextView title = (TextView) view.findViewById(R.id.title);        TextView version = (TextView) view.findViewById(R.id.version);        TextView size = (TextView) view.findViewById(R.id.size);        //4.设置控件信息        Map<String, Object> map = list.get(position);        logo.setImageResource((Integer) map.get("logo"));        title.setText((String)map.get("title"));        version.setText((String)map.get("version"));        size.setText((String)map.get("size"));        //5.返回view对象        return view;    }}
public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //1.获取ListView对象        ListView listView = (ListView) findViewById(R.id.lv);        //2.创建适配器        MyListAdapter adapter = new MyListAdapter(this);        adapter.InitList();        //3.关联listView对象        listView.setAdapter(adapter);    }}


5.Login

步骤,编写布局及控件,实现控件响应

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.inner.MainActivity">    <EditText        android:id="@+id/edt_usr"        android:textSize="20dp"        android:hint="在此输入用户名"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <EditText        android:id="@+id/edt_pass"        android:textSize="20dp"        android:hint="在此输入密码"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <LinearLayout        android:orientation="horizontal"        android:id="@+id/liner"        android:layout_width="wrap_content"        android:layout_height="wrap_content">                <CheckBox            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:id="@+id/checkbox_usr"            android:text="记住用户名"            android:textSize="20dp"/>        <CheckBox            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:id="@+id/checkbox_pass"            android:text="记住密码"            android:textSize="20dp"/>    </LinearLayout>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/btn1"        android:textSize="20dp"        android:text="登录"        android:onClick="login"/></LinearLayout>

package com.example.inner;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //1.加载文件中的用户信息        String string = loadUserAndPass();        if (string == null)        {            return ;        }        //2.拆分用户名和密码,进行设置        String[] userInfo = string.split("##");        EditText edituser = (EditText) findViewById(R.id.edt_usr);        EditText editpass = (EditText) findViewById(R.id.edt_pass);        edituser.setText(userInfo[0]);        editpass.setText(userInfo[1]);    }    public String loadUserAndPass() {        //1.获取路径        //String path = "data/data/com.bluelesson.inner/info.txt";        String path = "data/data/"+ getPackageName() +"/info.txt";        // 2. 创建文件对象, 判断是否已经存在,不存在直接退出        File file = new File(path);        //File file = getFilesDir();        if (!file.exists()){            Toast.makeText(this, "用户配置文件不存在", Toast.LENGTH_SHORT).show();            return null;        }        //3.加载用户信息        String strings = null;        try{            FileInputStream fileInputStream = new FileInputStream(file);            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));            strings = bufferedReader.readLine();            fileInputStream.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return strings;    }    public void saveUserAndPass(String user, String pass)    {        // 保存用户名和密码,保存到安装的app目录下        // 1. 获取路径        String path = "data/data/com.example.inner/info.txt";        //2.创建文件对象        File file = new File(path);        //3.将用户信息写入到文件对象中        String info = user + "##" + pass;        //使用文件输出流写入到文件对象中        try{            FileOutputStream fileoutputStream = new FileOutputStream(file);            fileoutputStream.write(info.getBytes());            fileoutputStream.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }    public void login(View view) {        //1.获取用户名        EditText editUser = (EditText) findViewById(R.id.edt_usr);        EditText editPass = (EditText) findViewById(R.id.edt_pass);        String user = editUser.getText().toString();        String pass = editPass.getText().toString();        //2.判断是否一致        if (user.equals(pass))        {            Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();        }        else {            Toast.makeText(this, "登录失败!", Toast.LENGTH_SHORT).show();        }        //3.判断是否需要保存        CheckBox checkBoxUser = (CheckBox) findViewById(R.id.checkbox_usr);        CheckBox checkBoxPass = (CheckBox) findViewById(R.id.checkbox_pass);        if (checkBoxUser.isChecked() || checkBoxPass.isChecked()){            saveUserAndPass(user, pass);        }    }}

6.文件读写

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.filechangemod.MainActivity">    <Button        android:text="私有方式"        android:textSize="20sp"        android:onClick="onClick"        android:id="@+id/btn_private"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="追加方式"        android:textSize="20sp"        android:onClick="onClick"        android:id="@+id/btn_append"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="全局读方式"        android:textSize="20sp"        android:onClick="onClick"        android:id="@+id/btn_global_read"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="全局写方式"        android:textSize="20sp"        android:onClick="onClick"        android:id="@+id/btn_global_write"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="全局读写方式"        android:textSize="20sp"        android:onClick="onClick"        android:id="@+id/btn_global_rw"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="读取文件"        android:textSize="20sp"        android:onClick="onClickRead"        android:id="@+id/btn_read"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="保存sp数据"        android:textSize="20sp"        android:onClick="save"        android:id="@+id/btn_save"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>

package com.example.filechangemod;import android.content.Context;import android.content.SharedPreferences;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Toast;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void onClick(View view) {        int id = view.getId();        String name = "";        int mode = 0;        switch (id){            case R.id.btn_private:                name = "private.txt";                mode = Context.MODE_PRIVATE;                break;            case R.id.btn_append:                name = "append.txt";                mode = Context.MODE_APPEND;                break;            case R.id.btn_global_read:                name = "global_read.txt";                mode = Context.MODE_WORLD_READABLE;                break;            case R.id.btn_global_write:                name = "global_write.txt";                mode = Context.MODE_WORLD_WRITEABLE;                break;            case R.id.btn_global_rw:                name = "global_wr.txt";                mode = Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE;                break;        }        try{            FileOutputStream fileOutputStream = openFileOutput(name, mode);            fileOutputStream.write("文件信息:".getBytes());            fileOutputStream.write(name.getBytes());            fileOutputStream.write(mode);            fileOutputStream.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }    public void save(View view){        SharedPreferences sharedPreferences = getSharedPreferences("lock", Context.MODE_WORLD_READABLE);        SharedPreferences.Editor editor = sharedPreferences.edit();        editor.putString("password", "hello");        editor.commit();        Toast.makeText(this, "editor.commit()", Toast.LENGTH_SHORT).show();    }    public void onClickRead(View view) {        String name = "private.txt";        try{            FileInputStream fileInputStream = openFileInput(name);            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));            String info = bufferedReader.readLine();            bufferedReader.close();            fileInputStream.close();            Toast.makeText(this, info, Toast.LENGTH_SHORT).show();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

7.sqlite

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.sqlite.MainActivity">    <Button        android:text="创建数据库"        android:onClick="create_database"        android:textSize="20sp"        android:id="@+id/btn_create_database"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="更新数据库"        android:onClick="update_database"        android:textSize="20sp"        android:id="@+id/btn_update_database"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="添加数据"        android:onClick="add_data"        android:textSize="20sp"        android:id="@+id/btn_add"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="删除数据"        android:onClick="delete_data"        android:textSize="20sp"        android:id="@+id/btn_delete"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="更新数据"        android:onClick="update_data"        android:textSize="20sp"        android:id="@+id/btn_update"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:text="查询数据"        android:onClick="select_data"        android:textSize="20sp"        android:id="@+id/btn_select"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>
package com.example.sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/** * Created by y0n on 2017/5/17. */public class DBHelper extends SQLiteOpenHelper {    private static final String TAG = "DBHelper";    public DBHelper(Context context, String name){        super(context, name, null, 1);    }    public DBHelper(Context context, String name, int version){        super(context, name, null, version);    }    public DBHelper(Context context,                    String name,                    SQLiteDatabase.CursorFactory factory,                    int version) {        super(context, name, factory, version);    }    @Override    public void onCreate(SQLiteDatabase db) {        Log.d(TAG, "onCreate");        // 创建数据库中的表信息        String sql = "create table user(id int,name varchar(20))";        // 执行sql语句        db.execSQL(sql);    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        Log.d(TAG, "onUpgrade");    }}
package com.example.sqlite;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void create_database(View view) {        //1.创建一个sqlite数据版主类对象        DBHelper dbHelper = new DBHelper(this, "test_db");        //2.创建并打开数据库        SQLiteDatabase db = dbHelper.getReadableDatabase();        if (db.isOpen())        {            Toast.makeText(this, "创建数据库成功!", Toast.LENGTH_SHORT).show();        }        //3.关闭数据库        db.close();    }    public void update_database(View view) {        //1.创建一个sqlite数据的版主类对象        DBHelper dbHelper = new DBHelper(this, "test_db");        //2.创建并打开数据库        SQLiteDatabase db = dbHelper.getReadableDatabase();        //3.关闭数据库        db.close();    }    public void add_data(View view) {        //1.打开数据库,获取数据库对象        DBHelper dbHelper = new DBHelper(this, "test_db");        SQLiteDatabase db = dbHelper.getReadableDatabase();        if (db.isOpen())        {            //2.添加数据            ContentValues values = new ContentValues();            values.put("id", "1001");            values.put("name", "北京");            db.insert("user", null, values);            values.put("id", "1002");            values.put("name", "上海");            db.insert("user", null, values);            values.put("id", "1003");            values.put("name", "深圳");            db.insert("user", null, values);            values.put("id", "1004");            values.put("name", "广州");            db.insert("user", null, values);            //3.关闭数据库            db.close();            Toast.makeText(this, "数据插入成功!", Toast.LENGTH_SHORT).show();        }    }    public void delete_data(View view) {        //1.打开数据库,获取数据库对象        DBHelper dbHelper = new DBHelper(this, "test_db");        SQLiteDatabase db = dbHelper.getReadableDatabase();        if (db.isOpen())        {            //2.删除数据            db.delete("user", "id=?", new String []{"1002"});            //3.关闭数据库            db.close();            Toast.makeText(this, "删除数据成功!", Toast.LENGTH_SHORT).show();        }    }    public void update_data(View view) {        //1.打开数据库,获取数据库对象        DBHelper dbHelper = new DBHelper(this, "test_db");        SQLiteDatabase db = dbHelper.getReadableDatabase();        if (db.isOpen())        {            //2.更新数据            ContentValues values = new ContentValues();            values.put("name", "成都");            db.update("user", values, "id=?", new String []{"1003"});            //3.关闭数据库            db.close();            Toast.makeText(this, "更新数据成功!", Toast.LENGTH_SHORT).show();        }    }    public void select_data(View view) {        //1.打开数据库,获取数据库对象        DBHelper dbHelper = new DBHelper(this, "test_db");        SQLiteDatabase db = dbHelper.getReadableDatabase();        //2.返回数据集        Cursor cursor = db.query("user", new String[]{"id", "name"}, null, null, null, null, null);        //3.遍历数据        int count = cursor.getCount();        if (count <= 0)            return ;        cursor.moveToFirst();        do {            String[] cols = cursor.getColumnNames();            String id = cursor.getString(0);            String name = cursor.getString(1);            Toast.makeText(this, "id="+ id +",name="+name, Toast.LENGTH_SHORT).show();        }while(cursor.moveToNext());        //3.关闭数据库        db.close();    }}

8.KeyEvent

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.keyevent.MainActivity">    <TextView        android:textSize="20sp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"/>    <EditText        android:inputType="textPassword"        android:id="@+id/edt"        android:textSize="20sp"        android:hint="在此输入数据"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/btn"        android:text="登录"        android:onClick="onClick"        android:textSize="20sp"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>
package com.example.keyevent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Base64;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    byte[] byPassword = new byte[20];    char[] chAscii = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};    char[] chPassword = new char[20];    int count = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        Toast.makeText(this, "onKeyDown"+event.getAction(), Toast.LENGTH_SHORT).show();        return super.onKeyDown(keyCode, event);    }    @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        if (count > 20)            return super.onKeyUp(keyCode,event);        if (keyCode >= 7 && keyCode <= (7+9))        {            byPassword[count] = (byte)(keyCode-7);            chPassword[count] = chAscii[byPassword[count]];            count++;        }        else if (count != 0 && keyCode == 38)        {            count--;        }        Toast.makeText(this, "onKeyUP:"+(keyCode-7)+event.getAction(), Toast.LENGTH_SHORT).show();        return super.onKeyUp(keyCode, event);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        Toast.makeText(this, "onTouchEvent"+event.getAction(), Toast.LENGTH_SHORT).show();        return super.onTouchEvent(event);    }    public void onClick(View view) {        String password = String.copyValueOf(chPassword, 0, count);        String encode = Base64.encodeToString(password.getBytes(), 0);        byte[] decode = Base64.decode(encode, 0);        Toast.makeText(this, "password:"+encode, Toast.LENGTH_SHORT).show();        Toast.makeText(this, "password:"+decode, Toast.LENGTH_SHORT).show();    }}


9.SDCard

public class SDcardReceiver extends BroadcastReceiver {    public SDcardReceiver() {    }    @Override    public void onReceive(Context context, Intent intent) {        // TODO: This method is called when the BroadcastReceiver is receiving        String action = intent.getAction();        if (action.equals("android.intent.action.MEDIA_MOUNTED")){            Log.v("sdCard", "sd卡就绪");        }        else if (action.equals("android.intent.action.MEDIA_UNMOUNTED")){            Log.v("sdCard", "sd卡被移除");        }        else if (action.equals("android.intent.action.MEDIA_REMOVED")){            Log.v("sdCard", "sd卡被拔出");        }    }}

10.APP监听

package com.example.applisten;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.util.Log;public class MyAPPInstallReceiver extends BroadcastReceiver {    public MyAPPInstallReceiver() {    }    @Override    public void onReceive(Context context, Intent intent) {        // TODO: This method is called when the BroadcastReceiver is receiving        Uri uri = intent.getData();        String action = intent.getAction();        if (action.equals("action.intent.action.PACKAGE_ADDED")){            Log.v("APPReceiver", uri + "被安装了");        }        else if (action.equals("action.intent.action.PACKAGE_REPLACED")){            Log.v("APPReceiver", uri + "被更新了");        }        else if (action.equals("action.intent.action.PACKAGE_REMOVED")){            Log.v("APPReceiver", uri + "被卸载了");        }    }}

11.SMSReceiver

public class smsHookReceiver extends BroadcastReceiver {    public smsHookReceiver() {    }    @Override    public void onReceive(Context context, Intent intent) {        // TODO: This method is called when the BroadcastReceiver is receiving        Bundle bundle = intent.getExtras();        Object[] objects = (Object[])bundle.get("pdus");        for (int i = 0; i < objects.length; i++)        {            SmsMessage smsMessage = SmsMessage.createFromPdu((byte[])objects[i]);            String sms = smsMessage.getMessageBody();            Toast.makeText(context, "sms:" + sms, Toast.LENGTH_SHORT).show();            String num = smsMessage.getOriginatingAddress();            Toast.makeText(context, "num:" + num, Toast.LENGTH_SHORT).show();        }    }}

12.PhoneListen

package com.example.phonelisten;import android.app.Service;import android.content.Context;import android.content.Intent;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;public class MyService extends Service {    private final String TAG = "MyService";    private TelephonyManager tm;    private MyPhoneStateListener listener;    public MyService() {    }    @Override    public void onDestroy() {        Log.d(TAG, "onDestroy");        super.onDestroy();        tm.listen(listener, PhoneStateListener.LISTEN_NONE);    }    @Override    public void onCreate() {        super.onCreate();        tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);        listener = new MyPhoneStateListener();        tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);    }    @Override    public IBinder onBind(Intent intent) {        return null;    }    private class MyPhoneStateListener extends PhoneStateListener{        @Override        public void onCallStateChanged(int state, String incomingNumber) {            super.onCallStateChanged(state, incomingNumber);            switch (state){                case TelephonyManager.CALL_STATE_IDLE:                    Log.d(TAG, "电话闲置");                    break;                case TelephonyManager.CALL_STATE_RINGING:                    Log.d(TAG, "电话响铃");                    break;                case TelephonyManager.CALL_STATE_OFFHOOK:                    Log.d(TAG, "电话接听");                    break;            }        }    }}


13.服务

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.localselectperson.MainActivity">    <Button        android:id="@+id/btn_1"        android:textSize="20sp"        android:onClick="onStartService"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="绑定服务"/>    <Button        android:id="@+id/btn_11"        android:textSize="20sp"        android:onClick="onStopService"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="解绑服务"/>    <EditText        android:id="@+id/edit_query"        android:hint="在此输入您的ID"        android:textSize="20sp"        android:inputType="number"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/btn_3"        android:textSize="20sp"        android:onClick="onSelect"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="查询信息"/>    <TextView        android:id="@+id/show_text"        android:textSize="20sp"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>
package com.example.localselectperson;/** * Created by y0n on 2017/5/19. */public interface IPerson {    public String queryNameByID(int id);}
package com.example.localselectperson;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;public class MyService extends Service {    MyBinder binder;    public MyService() {    }    @Override    public IBinder onBind(Intent intent) {        // TODO: Return the communication channel to the service.        return binder;    }    @Override    public void onCreate() {        super.onCreate();        binder = new MyBinder();    }    class MyBinder extends Binder implements IPerson{        String[] mStrings = {"张山", "里斯", "王五", "找刘", "前期"};        @Override        public String queryNameByID(int id) {            if (id < 0 || id >= 4)            {                return "查入此人";            }            return mStrings[id];        }    }    @Override    public void onDestroy() {        super.onDestroy();        if (binder != null){            binder = null;        }    }}
package com.example.localselectperson;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.IBinder;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private Intent mIntent;    private MyServiceConn conn;    MyService.MyBinder mMyBinder = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void onStartService(View view) {        mIntent = new Intent(this, MyService.class);        conn = new MyServiceConn();        bindService(mIntent, conn, BIND_AUTO_CREATE);        Toast.makeText(this, "绑定完成", Toast.LENGTH_SHORT).show();    }    public void onStopService(View view) {        unbindService(conn);        stopService(mIntent);        mMyBinder = null;        Toast.makeText(this, "mMyBinder = null", Toast.LENGTH_SHORT).show();    }    public void onSelect(View view){        EditText editText = (EditText)findViewById(R.id.edit_query);        String id = editText.getText().toString();        if (id.length() > 7)        {            Toast.makeText(this, "长度不能超过7", Toast.LENGTH_SHORT).show();            return;        }        if (mMyBinder != null)        {            String name = mMyBinder.queryNameByID(Integer.parseInt(id));            TextView textView = (TextView) findViewById(R.id.show_text);            textView.setText(name);        }        else        {            TextView textView = (TextView) findViewById(R.id.show_text);            textView.setText("没有开启服务");        }    }    private class MyServiceConn implements ServiceConnection{        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            mMyBinder = (MyService.MyBinder) service;        }        @Override        public void onServiceDisconnected(ComponentName name) {            //非正常情况下bind服务断开时或被杀死时调用            mMyBinder = null;        }    }}

14.APPManager

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.appmanager.MainActivity">    <Button        android:id="@+id/btn_all"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="所有应用"        android:onClick="onAllAPK"/>    <Button        android:id="@+id/btn_system"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="系统应用"        android:onClick="onSysAPK"/>    <Button        android:id="@+id/btn_third"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="第三方应用"        android:onClick="onThirdAPK"/></LinearLayout>

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="20dp"    android:paddingLeft="20dp"    android:paddingRight="20dp"    android:paddingStart="20dp"    android:paddingTop="20dp"    tools:context="com.example.appmanager.ActivityAllApk">    <TextView        android:layout_gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="所有应用程序"        android:textSize="20sp" />    <ListView        android:id="@+id/list_all_apk"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:divider="#f00"        android:dividerHeight="2dp"/></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="20dp"    android:paddingLeft="20dp"    android:paddingRight="20dp"    android:paddingStart="20dp"    android:paddingTop="20dp"    tools:context="com.example.appmanager.ActivitySystemApk">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="系统应用程序"        android:textSize="20sp" />    <!--<RelativeLayout-->    <!--android:layout_width="match_parent"-->    <!--android:layout_height="wrap_content"-->    <!--android:layout_marginTop="10dp"-->    <!--android:orientation="vertical">-->    <!--<TextView-->    <!--android:layout_width="wrap_content"-->    <!--android:layout_height="wrap_content"-->    <!--android:layout_alignParentLeft="true"-->    <!--android:text="已用:458MB"-->    <!--android:textSize="20dp" />-->    <!--<TextView-->    <!--android:layout_width="wrap_content"-->    <!--android:layout_height="wrap_content"-->    <!--android:layout_alignParentRight="true"-->    <!--android:text="可用:12GB"-->    <!--android:textSize="20dp" />-->    <!--</RelativeLayout>-->    <ListView        android:id="@+id/list_system_apk"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:elevation="1dp"        android:divider="#f00"        android:dividerHeight="2dp"/></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="20dp"    android:paddingLeft="20dp"    android:paddingRight="20dp"    android:paddingStart="20dp"    android:paddingTop="20dp"    tools:context="com.example.appmanager.ActivityThirdApk">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="第三方应用程序"        android:textSize="20sp" />    <ListView        android:descendantFocusability="blocksDescendants"        android:id="@+id/list_third_apk"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:elevation="1dp"        android:divider="#f00"        android:dividerHeight="2dp"/></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <ImageView            android:id="@+id/im_icon"            android:layout_width="50dp"            android:layout_height="50dp"            />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginStart="20dp"            android:orientation="vertical"            android:layout_marginLeft="20dp"            android:layout_weight="3">            <TextView                android:id="@+id/tv_appname"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:text="程序名:"                android:textSize="20sp" />            <TextView                android:id="@+id/tv_apppackge"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:text="包名:"                android:textSize="13sp" />        </LinearLayout>        <Button            android:focusable="false"            android:id="@+id/btn_uninstall"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="卸载"            />    </LinearLayout></LinearLayout>
package com.example.appmanager;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity {    //刷新//直接点击按钮响应    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void onAllAPK(View view) {        Intent intentALL = new Intent(MainActivity.this, ActivityAllApk.class);        startActivity(intentALL);    }    public void onSysAPK(View view) {        Intent intentSys = new Intent(MainActivity.this, ActivitySystemApk.class);        startActivity(intentSys);    }    public void onThirdAPK(View view) {        Intent intentThird = new Intent(MainActivity.this, ActivityThirdApk.class);        startActivity(intentThird);    }}
package com.example.appmanager;import android.content.Context;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;import android.net.Uri;import java.util.ArrayList;import java.util.List;/** * Created by y0n on 2017/5/20. */public class GetAppsinfo {    public static final int FILTER_ALL_APP = 0; // 所有应用程序    public static final int FILTER_SYSTEM_APP = 1; // 系统程序    public static final int FILTER_THIRD_APP = 2; // 第三方应用程序    private Context mContext = null;    private PackageManager mPackageManager = null;    private List<AppsInfo> mAppsInfoList = new ArrayList<AppsInfo>();    public GetAppsinfo(Context mContext) {        this.mContext = mContext;        // PackageManager 类表示已安装的应用程序信息        mPackageManager = mContext.getPackageManager(); }    public List<AppsInfo> filterApp(int filter){        //查询所有已经安装的应用程序        List<ApplicationInfo>applicationInfos=                mPackageManager.getInstalledApplications(                        PackageManager.GET_UNINSTALLED_PACKAGES);        mAppsInfoList.clear();        switch (filter){            case FILTER_ALL_APP:            {                for (ApplicationInfo applicationInfo: applicationInfos ){                    getApkInfo(applicationInfo);                }            }            break;            case FILTER_SYSTEM_APP:            {                for (ApplicationInfo applicationInfo : applicationInfos) {                    if ((applicationInfo.flags &                            ApplicationInfo.FLAG_SYSTEM) != 0) {                        getApkInfo(applicationInfo);                    }                }            }            break;            case FILTER_THIRD_APP:            {                for (ApplicationInfo applicationInfo : applicationInfos) {                    // 非系统应用                    if ((applicationInfo.flags &                            ApplicationInfo.FLAG_SYSTEM) <= 0) {                        getApkInfo(applicationInfo);                    }                    // 系统应用,但更新后变成不是系统应用了                    else if ((applicationInfo.flags &                            ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {                        getApkInfo(applicationInfo);                    }                }            }            break;        }        return mAppsInfoList;    }    private void getApkInfo(ApplicationInfo app){        AppsInfo appsInfo = new AppsInfo();        // 获取应用名称        String appName = app.loadLabel(mPackageManager).toString();        String packageName = app.packageName; // 包名        Drawable drIcon = app.loadIcon(mPackageManager); // 图标        appsInfo.setStrApkName(appName);        appsInfo.setStrPackageName(packageName);        appsInfo.setDrIcon(drIcon);        mAppsInfoList.add(appsInfo);        System.out.println("程序名:" + appName +                " 包名:" + packageName);    }    //卸载    public void unInstall(String strPackgeName){        Intent intent = new Intent(Intent.ACTION_DELETE);        intent.setData(Uri.parse("package:"+ strPackgeName));        mContext.startActivity(intent);    }}
package com.example.appmanager;import android.graphics.drawable.Drawable;/** * Created by y0nz1 on 2017/5/19. */public class AppsInfo {    String strApkName; //程序名    String strPackageName; //包名    Drawable drIcon; //图标    public Drawable getDrIcon() {        return drIcon;    }    public void setDrIcon(Drawable drIcon) {        this.drIcon = drIcon;    }    public String getStrApkName() {        return strApkName;    }    public void setStrApkName(String strApkName) {        this.strApkName = strApkName;    }    public String getStrPackageName() {        return strPackageName;    }    public void setStrPackageName(String strPackageName) {        this.strPackageName = strPackageName;    }    public AppsInfo(Drawable drIcon, String strApkName, String strPackageName) {        this.drIcon = drIcon;        this.strApkName = strApkName;        this.strPackageName = strPackageName;    }    public AppsInfo() {    }}
package com.example.appmanager;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;/** * Created by y0n on 2017/5/19. */public class APKAdapter extends BaseAdapter {    List<AppsInfo> mAppsInfoList = new ArrayList<AppsInfo>();    Context mContext;    public APKAdapter(List<AppsInfo> mAppsInfoList, Context mContext) {        this.mAppsInfoList = mAppsInfoList;        this.mContext = mContext;    }    @Override    public int getCount() {        return mAppsInfoList.size();    }    @Override    public Object getItem(int position) {        return mAppsInfoList.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder = null;        View view = null;        //1.当 covertView 为空时(第一次调用)        if (convertView == null){            //1.获取布局加载器            LayoutInflater layoutInflater = LayoutInflater.from(mContext);            //2.获取 view 对象            view = layoutInflater.inflate(R.layout.item,null);            //3.获取 item 中的控件对象            viewHolder = new ViewHolder(view);            view.setTag(viewHolder);        }else {            view = convertView;            viewHolder = (ViewHolder) view.getTag();        }        //2.将信息显示都界面上        AppsInfo appsInfo = (AppsInfo) getItem(position);        viewHolder.mImIcon.setImageDrawable(appsInfo.getDrIcon());        viewHolder.mTvAppName.setText(appsInfo.getStrApkName());        viewHolder.mTvAppPackge.setText(appsInfo.getStrPackageName());        return view;    }    public class ViewHolder{        ImageView mImIcon = null;        TextView mTvAppName = null;        TextView mTvAppPackge = null;        public ViewHolder(View view){            mImIcon = (ImageView) view.findViewById(R.id.im_icon);            mTvAppName = (TextView) view.findViewById(R.id.tv_appname);            mTvAppPackge = (TextView) view.findViewById(R.id.tv_apppackge);        }    }}
package com.example.appmanager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;import static com.example.appmanager.GetAppsinfo.FILTER_ALL_APP;public class ActivityAllApk extends AppCompatActivity {    private long mid;    private String packgename;    private List<AppsInfo> mAppsInfoList;    private GetAppsinfo apkinfo;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_all_apk);        // 1. 获取 ListView 对象        ListView listView = (ListView) findViewById(R.id.list_all_apk);        // 2. 创建适配器        mAppsInfoList = new ArrayList<AppsInfo>();        // 3. 获取APk信息        apkinfo = new GetAppsinfo(getApplicationContext());        mAppsInfoList = apkinfo.filterApp(FILTER_ALL_APP);        APKAdapter adapter = new APKAdapter(mAppsInfoList, getApplicationContext());        // 3. 关联 listView 对象        listView.setAdapter(adapter);        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.v("apkinfo", "uninstall");                mid = id;                Button button = (Button) view.findViewById(R.id.btn_uninstall);                button.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        packgename = mAppsInfoList.get((int) mid).getStrPackageName();                        String appname = mAppsInfoList.get((int) mid).getStrApkName();                        apkinfo.unInstall(packgename);                        Toast.makeText(v.getContext(), "将卸载" + appname, Toast.LENGTH_SHORT).show();                    }                });            }        });    }}
package com.example.appmanager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;import static com.example.appmanager.GetAppsinfo.FILTER_SYSTEM_APP;public class ActivitySystemApk extends AppCompatActivity {    private long mid;    private String packgename;    private List<AppsInfo> mAppsInfoList;    private GetAppsinfo apkinfo;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_system_apk);        // 1. 获取 ListView 对象        ListView listView = (ListView) findViewById(R.id.list_system_apk);        // 2. 创建适配器        mAppsInfoList = new ArrayList<AppsInfo>();        // 3. 获取APk信息        apkinfo = new GetAppsinfo(getApplicationContext());        mAppsInfoList = apkinfo.filterApp(FILTER_SYSTEM_APP);        APKAdapter adapter = new APKAdapter(mAppsInfoList, getApplicationContext());        // 3. 关联 listView 对象        listView.setAdapter(adapter);        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.v("apkinfo", "uninstall");                mid = id;                Button button = (Button) view.findViewById(R.id.btn_uninstall);                button.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        packgename = mAppsInfoList.get((int)mid).getStrPackageName();                        String appname = mAppsInfoList.get((int)mid).getStrApkName();                        apkinfo.unInstall(packgename);                        Toast.makeText(v.getContext(), "将卸载" + appname, Toast.LENGTH_SHORT).show();                    }                });            }        });    }}
package com.example.appmanager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;import static com.example.appmanager.GetAppsinfo.FILTER_THIRD_APP;import static com.example.appmanager.R.layout.activity_third_apk;public class ActivityThirdApk extends AppCompatActivity {    private List<AppsInfo> mAppsInfoList;    private String packgename;    private long mid;    private View mview;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(activity_third_apk);        // 1. 获取 ListView 对象        ListView listView = (ListView) findViewById(R.id.list_third_apk);        // 2. 创建适配器        mAppsInfoList = new ArrayList<AppsInfo>();        // 3. 获取APk信息        final GetAppsinfo apkinfo = new GetAppsinfo(getApplicationContext());        mAppsInfoList = apkinfo.filterApp(FILTER_THIRD_APP);        APKAdapter adapter = new APKAdapter(mAppsInfoList, getApplicationContext());        // 3. 关联 listView 对象        listView.setAdapter(adapter);        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.v("apkinfo", "uninstall");                mid = id;                Button button = (Button) view.findViewById(R.id.btn_uninstall);                button.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        packgename = mAppsInfoList.get((int)mid).getStrPackageName();                        String appname = mAppsInfoList.get((int)mid).getStrApkName();                        apkinfo.unInstall(packgename);                        Toast.makeText(v.getContext(), "将卸载" + appname, Toast.LENGTH_SHORT).show();                    }                });            }        });    }}

15.获取html源码

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.htmlsourceviewplus.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <Button            android:id="@+id/btn"            android:text="访问hao123网页源码"            android:textSize="20sp"            android:onClick="openurl"            android:layout_weight="1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"/>        <Button            android:id="@+id/btn_cancel"            android:onClick="cancel"            android:text="取消执行"            android:textSize="20sp"            android:layout_weight="1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"/>    </LinearLayout>    <SeekBar        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/seekBar"/>    <ScrollView        android:layout_width="match_parent"        android:layout_height="match_parent">        <TextView            android:id="@+id/tv_text"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:text="Hello World!"/>    </ScrollView></LinearLayout>
package com.example.htmlsourceviewplus;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.SeekBar;import android.widget.TextView;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class MainActivity extends AppCompatActivity {    private Button mBtnOpenUrl;    private Button mBtnCancel;    private SeekBar mSeekBar;    private TextView mTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mBtnOpenUrl = (Button) findViewById(R.id.btn);        mBtnCancel = (Button) findViewById(R.id.btn_cancel);        mSeekBar = (SeekBar) findViewById(R.id.seekBar);        mTextView = (TextView) findViewById(R.id.tv_text);        mBtnOpenUrl.setEnabled(true);        mBtnCancel.setEnabled(false);    }    public void openurl(View view) {        MyAyncTask myAyncTask = new MyAyncTask();        myAyncTask.execute("http://www.hao123.com");        mBtnOpenUrl.setEnabled(false);        mBtnCancel.setEnabled(true);    }    public void cancel(View view) {        mBtnOpenUrl.setEnabled(true);        mBtnCancel.setEnabled(false);    }    //异步任务    private class MyAyncTask extends AsyncTask<String, Integer, String>{        //初始化UI        @Override        protected void onPreExecute() {            super.onPreExecute();            mSeekBar.setProgress(0);            mSeekBar.setMax(100);            mTextView.setText("loading ...");        }        //后台操作        @Override        protected String doInBackground(String... params) {            try {                // 1. 构造URL对象                String path = params[0];                URL url = new URL(path);                // 2. 创建一个URL连接对象                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                // 3. 设置URL的请求模式或者其他信息                urlConnection.setRequestMethod("GET");                urlConnection.setConnectTimeout(5000);                urlConnection.setRequestProperty("Accept-Encoding", "identity");                // 4. 请求数据,获取返回码                int code = urlConnection.getResponseCode();                // 200 OK  302 found 404 not fount 500 内部错误                if (code == 200) {                    // 获取内容长度,需要指定RequestProperty                    int nMaxLen = urlConnection.getContentLength();                    int nLen = 0;                    // 4.1 读取信息                    InputStream inputStream = urlConnection.getInputStream();                    byte[] bytes = new byte[50];                    int iReadSize = 0;                    // 创建字节流对象,用于保存输入流的信息                    ByteArrayOutputStream byteObj = new ByteArrayOutputStream();                    while (iReadSize != -1) {                        // 循环读取数据信息,每次读取1024字节,会自动移动指针                        // 第二个参数指的值字节数组的起始偏移                        iReadSize = inputStream.read(bytes, 0, 50);                        if (iReadSize == -1) break;                        // 计算已经读取的长度                        nLen += iReadSize;                        // 更新进度                        this.publishProgress((int) (((float) nLen / (float) nMaxLen) * 100));                        byteObj.write(bytes, 0, iReadSize);                    }                    inputStream.close();                    //获取字符                    String strings = new String(byteObj.toByteArray());                    return strings;                }            } catch (Exception e) {                e.printStackTrace();            }            return null;        }        //更新进度        @Override        protected void onProgressUpdate(Integer... values) {            super.onProgressUpdate(values);            mSeekBar.setProgress(values[0]);        }        //处理返回信息        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            mTextView.setText(s);        }    }}

16.解析Android清单文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.parsemanifast.MainActivity">    <Button        android:id="@+id/parsexml"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="解析Manifast"        android:onClick="onParseXML"        />    <ListView        android:id="@+id/listview1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:divider="#f00"        android:dividerHeight="2dp"        android:headerDividersEnabled="false">    </ListView></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.parsemanifast.MainActivity"    android:orientation="vertical"    >   <TextView     android:text="item"     android:id="@+id/text1"     android:layout_width="wrap_content"     android:layout_height="wrap_content" /></LinearLayout>
package com.example.parsemanifast;import android.content.res.AssetManager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserFactory;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.io.StringReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity {    private List<String> tagList;    private List<String> retStr;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        }    /**     * 1.获取文件path,getAssets     * 2.打开文件,inputStream     * 3.new 一个字符数组     * 4.new一个字符数组输出流对象     * 5.循环读取,read到字符数组输出流对象中     * 6.再转成字符串     * 7.再解析,myXMLParse     * 8.创建ui线程显示到界面     */    //读取文件并解析,测试    public void onParseXML(View view) {        String xml = null;        AssetManager assetManager = getAssets();        try {            InputStream inputStream = assetManager.open("manifast.xml");            byte[] bytes = new byte[1024];            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();            int nReadSize = 0;            while (nReadSize != -1) {                nReadSize = inputStream.read(bytes, 0, 1024);                if (nReadSize == -1) break;                byteArrayOutputStream.write(bytes);            }            inputStream.close();            xml = new String(byteArrayOutputStream.toByteArray());            //调用标签解析函数            //测试            List<String> listTag = myParseTag(xml);            retStr = new ArrayList<>();            int j = 0;            for (int i = 0; i < listTag.size(); i ++)            {                Map<String, String> mapnameval = myParesVat(xml, listTag.get(i));                for (Map.Entry<String, String> entry : mapnameval.entrySet())                {                    System.out.println("<" + listTag.get(i) + ">:"                            + "\t" + entry.getKey()                            + "=" + entry.getValue());                    String strTextView = "<" + listTag.get(i) + ">:"                            + "\t" + entry.getKey()                            + "=" + entry.getValue();                    retStr.add(strTextView);                }            }        } catch (Exception e) {            e.printStackTrace();        }        //1.获取对象        ListView lv = (ListView) findViewById(R.id.listview1);        //2.获取数据        ArrayAdapter<String> arrayAdapter =                new ArrayAdapter<String>(this, R.layout.item,R.id.text1, retStr);        // setListAdapter();        lv.setAdapter(arrayAdapter);    }    /**     * 1.获取xml解析工厂     * 2.获取xml解析器     * 3.设置解析的文件     * 4.获取事件类型     * 5.循环解析     * 6.getName,保存到list中     * 7.返回List数据为标签列表     */    //解析出标签,保存到List中    public List<String> myParseTag(String xml) {        XmlPullParserFactory factory = null;        //标签列表        tagList = new ArrayList<>();//        //属性列表//        attrList = new ArrayList<>();//        //属性和值的映射//        Map<String, String> attrMap = new HashMap<>();//        //属性和值的映射的列表//        List<Map<String, String>> attrvalmapList= new ArrayList<>();//        //标签和属性的映射//        Map<List<String>, Map<String, String>> tagAttrMap = new HashMap<>();//        //保存每个映射到列表中//        List<Map<String, Map<String, String>>> xmlList = new ArrayList<>();////        List<map《标签,map《属性,值》》>        try {            factory = XmlPullParserFactory.newInstance();            XmlPullParser xpp = factory.newPullParser();            xpp.setInput(new StringReader(xml));            int eventType = xpp.getEventType();            while (eventType != XmlPullParser.END_DOCUMENT) {                if (eventType == XmlPullParser.START_DOCUMENT) {                    System.out.println("Start Document");                    //tagList.add(xpp.getName());                } else if (eventType == XmlPullParser.START_TAG) {                    System.out.println("Start tag " + xpp.getName());                    tagList.add(xpp.getName());                } else if (eventType == XmlPullParser.END_TAG) {                    System.out.println("End tag " + xpp.getName());                    //tagList.add(xpp.getName());                }                eventType = xpp.next();            }            return tagList;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    //解析标签中的属性    public Map<String, String> myParesVat(String xml, String StrTag) {        Map<String, String> attrvalmap = new HashMap<>();        List<Map<String, String>> attrvalmaplist = new ArrayList<>();        XmlPullParserFactory factory = null;        try {            factory = XmlPullParserFactory.newInstance();            XmlPullParser xpp = factory.newPullParser();            xpp.setInput(new StringReader(xml));            int eventType = xpp.getEventType();            while (eventType != XmlPullParser.END_DOCUMENT) {                if (eventType == XmlPullParser.START_DOCUMENT) {                    //System.out.println("Start Document");                    //tagList.add(xpp.getName());                } else if (eventType == XmlPullParser.START_TAG) {                    //System.out.println("Start tag " + xpp.getName());                    //判断是否等于某个标签                    if (StrTag.equals(xpp.getName())) {                        //循环保存属性和值                        if (xpp.getAttributeCount() == 0)                        {                            String attrname = "无属性";                            String attrval = "无值";                            attrvalmap.put(attrname, attrval);                            attrvalmaplist.add(attrvalmap);                        }                        else {                            for (int i = 0; i < xpp.getAttributeCount(); i++) {                                String attrname = xpp.getAttributeName(i);                                String attrval = xpp.getAttributeValue(i);                                attrvalmap.put(attrname, attrval);                                //attrvalmaplist.add(attrvalmap);                            }                        }                        return attrvalmap;                        //return attrvalmaplist;                    }                } else if (eventType == XmlPullParser.END_TAG) {                    //System.out.println("End tag " + xpp.getName());                    //tagList.add(xpp.getName());                }                eventType = xpp.next();            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}


17.jsoup库的使用

package com.example.jsoup;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private TextView textView;    private List<String> content = new ArrayList<>();    //http://m.kugou.com/    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.tv_show);        textView.setText("抓取中...");        runSubThread();    }    public void runSubThread(){        new Thread(){            @Override            public void run() {                super.run();                String path = "http://m.kugou.com";                try {                    Document doc = Jsoup.connect(path).userAgent("Mozilla/5.0 (Linux;" +                            " Android 6.0;" +                            " Nexus 5 Build/MRA58N) AppleWebKit/537.36" +                            " (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36").                            timeout(5000).                            get();                    Elements links = doc.select("a[href]");                    Elements media = doc.select("img[src]");                    Elements imports = doc.select("link[href]");                    System.out.println(String.format("Media:(%d)", media.size()));                    for (Element src : media)                    {                        if (src.tagName().equals("img")){                            System.out.println("<img>" + String.format("%s:%s",                                    src.tagName(),                                    src.attr("abs:src")));                            content.add("<img>" + String.format("%s:%s",                                    src.tagName(),                                    src.attr("abs:src")));                        }                    }                    runOnUiThread(new Runnable() {                        @Override                        public void run() {                            for (int i = 0; i < content.size(); i++)                                textView.setText(content.get(i));                        }                    });                }                catch (Exception e) {                    e.printStackTrace();                }            }        }.start();    }}

18.使用jsoup解析KuGou

package com.example.getkugoumusic;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import org.json.JSONObject;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.util.ArrayList;import java.util.List;//1.访问http://m.kugou.com获取网页源码//2.然后通过选择器进行过滤,过滤出歌曲列表中的id属性//3.提取其中的id值为songs_BB8BF48B08C0AEC4F8058EB95C8285B9,提取出其中的hash值//4.构造访问服务器的url = “http://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash=// “+id的hash值 + “&from=mkugou”,采用GET方式发送//5.获取从服务端返回的json格式数据//6.构造歌曲信息java bean对象,解析json数据//7.通过返回的json数据获取其中的歌曲资源的url,访问资源,保存到本地文件中//8.测试文件是否可用。public class MainActivity extends AppCompatActivity {    private List<String> strIDList;    private List<Document> docsList;    private List<KugouMusicInfo> kugouMusicInfosList;    private TextView textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        visitKugou();        textView = (TextView) findViewById(R.id.text1);    }    //访问http://m.kugou.com获取新歌列表中的li标签的id属性和id值    public void visitKugou(){        //创建线程        new Thread(){            @Override            public void run() {                super.run();                //定义path                String path = "http://m.kugou.com";                try {                    //使用jsoup连接Kugou,设置代理及超时                    Document doc = Jsoup.connect(path).userAgent("Mozilla/5.0 (Linux;" +                            " Android 6.0;" +                            " Nexus 5 Build/MRA58N) AppleWebKit/537.36" +                            " (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36").                            timeout(5000).                            get();                    //设置选择器,查找li标签中的id属性                    Elements liID = doc.select("li[id]");                    //测试输出                    System.out.println(String.format("li:%d", liID.size()));                    //使用list保存提取出来的strID                    strIDList = new ArrayList<>();                    for (Element li : liID){                        if (li.tagName().equals("li")){                            System.out.println("<li>" + String.format("%s:%s",                                    li.tagName(),                                    li.attr("id")));                            String strID = li.attr("id");                            int begin = strID.indexOf("_") + 1;                            strID = strID.substring(begin, 38);                            System.out.println(strID);                            strIDList.add(strID);                        }                    }                    //构造访问服务器的URL采用get方式                    //“http://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash=                    // “+id的hash值 + “&from=mkugou”,采用GET方式发送                    //创建一个list保存这个对象                    kugouMusicInfosList = new ArrayList<KugouMusicInfo>();                    for (int i = 0; i < strIDList.size(); i++)                    {                        String strPath = "http://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash="                                + strIDList.get(i) + "&from=mkugou";                       // docsList = new ArrayList<Document>();                        //使用构造好的url访问服务器,并接收返回的json数据,并保存在docList中                        Document docs =  Jsoup.connect(strPath).userAgent("Mozilla/5.0 (Linux;" +                                " Android 6.0;" +                                " Nexus 5 Build/MRA58N) AppleWebKit/537.36" +                                " (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36").                                timeout(5000).                                get();                        //docsList.add(docs);                        //创建一个MusicInfo对象                        final KugouMusicInfo kugouMusicInfo = new KugouMusicInfo();                        //对获取到的docs字符串进行提取,取得json格式数据                        String strDocs = docs.toString();                        int begin = strDocs.indexOf("<body>") + "<body>".length();                        int end = strDocs.indexOf("</body>");                        strDocs = strDocs.substring(begin, end);                        //json解析                        //获取json对象                        JSONObject jsonObject = new JSONObject(strDocs);                        //根据key获取value                        String songName = jsonObject.getString("songName");                        kugouMusicInfo.setSongName(songName);                        String singerName = jsonObject.getString("singerName");                        kugouMusicInfo.setSingerName(singerName);                        String fileSize = jsonObject.getString("fileSize");                        kugouMusicInfo.setFileSize(fileSize);                        String musicUrl = jsonObject.getString("url");                        kugouMusicInfo.setMusicUrl(musicUrl);                        String imgUrl = jsonObject.getString("imgUrl");                        kugouMusicInfo.setImgUrl(imgUrl);                        String extName = jsonObject.getString("extName");//音乐类型                        kugouMusicInfo.setExtName(extName);                        String timeLength = jsonObject.getString("timeLength");                        kugouMusicInfo.setTimeLength(timeLength);                        System.out.println(kugouMusicInfo.toString());                        kugouMusicInfosList.add(kugouMusicInfo);                        //使用ui线程将数据显示在界面上                        runOnUiThread(new Runnable() {                            @Override                            public void run() {                                textView.setText(kugouMusicInfo.toString());                            }                        });                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }.start();    }}

原创粉丝点击