day10

ContentProvider

ContentProvider

MyContentProvider

public class MyContentProvider extends ContentProvider {
    private MySqlHelp help;
    private SQLiteDatabase database;
    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return database.delete("students",selection,selectionArgs);
    }

    @Override
    public String getType(Uri uri) {

        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
       database.insert("students",null,values);
       return uri;
    }

    @Override
    public boolean onCreate() {
        help = new MySqlHelp(getContext());
        database = help.getReadableDatabase();
        if(database==null){
            return false;
        }else {
            return true;
        }

    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        return database.query("students",projection,selection,selectionArgs,null,null,sortOrder);
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
       return database.update("students",values,selection,selectionArgs);
    }
}

接收

public class MainActivity extends AppCompatActivity {
    private ContentResolver context;
    private Uri uri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = getContentResolver();
        uri = Uri.parse("content://com.day09.aaa");
        context=getContentResolver();
    }

    private void query() {
        Cursor query = context.query(uri, null,null, null, null);
        while(query.moveToNext()){
            String name = query.getString(query.getColumnIndex("name"));
            int id = query.getInt(query.getColumnIndex("id"));
            Toast.makeText(this,id+":"+name, Toast.LENGTH_SHORT).show();
        }
    }

    public void click(View view) {
        switch (view.getId()){
            case R.id.query:
                query();
                break;
            case R.id.insert:
                insert();
                break;
            case R.id.delete:
                int raw=context.delete(uri,"name=?",new String[]{"张雨东"});
                break;

        }
    }

    private void insert() {
        ContentValues contentValues=new ContentValues();
        contentValues.put("name","hahaha");
        contentValues.put("age",18);
        context.insert(uri,contentValues);
    }
}

电话

MyAdapter

public class MyAdapter extends BaseAdapter {
    private Context context;
    private LayoutInflater inflater;
    private List<Phone> lists;

    public MyAdapter(Context context, List<Phone> lists) {
        this.context = context;
        this.lists = lists;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return lists.size();
    }

    @Override
    public Object getItem(int position) {
        return lists.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView==null){
            holder=new ViewHolder();
            convertView=inflater.inflate(R.layout.item,null);
            holder.name=convertView.findViewById(R.id.name);
            holder.number=convertView.findViewById(R.id.number);
            convertView.setTag(holder);
        }else {
            holder= (ViewHolder) convertView.getTag();
        }
        holder.name.setText(lists.get(position).getName());
        holder.number.setText(lists.get(position).getNumber());
        return convertView;
    }
    class ViewHolder{
        private TextView name;
        private TextView number;
    }
}

main

public class MainActivity extends AppCompatActivity {
    private Button btn1;
    private List<Phone> lists=new ArrayList<>();
    private ListView lv;
    private MyAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = findViewById(R.id.btn1);
        lv =findViewById(R.id.lv);
        adapter=new MyAdapter(this,lists);
        lv.setAdapter(adapter);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
            requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS,Manifest.permission.READ_CONTACTS},100);
        }


        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                adapter.notifyDataSetChanged();
            }


        });

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode==100&grantResults[0]== PackageManager.PERMISSION_GRANTED){
            resolverMethod();
        }
    }

    private void resolverMethod() {
        ContentResolver contentResolver = getContentResolver();
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String[] strings={ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME};
        Cursor query = contentResolver.query(uri, strings, null, null, null, null);
        while(query.moveToNext()){
            String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String number = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            Phone phone = new Phone(name, number);
            lists.add(phone);
        }
    }
}
点赞