一天一点Android知识(内容提供器)

来源:互联网 发布:手机淘宝 没有链接 编辑:程序博客网 时间:2024/04/30 05:50

内容提供器的用法有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另外一种是创建自己的内容提供器给我们程序的数据提供外部访问接口。

MainActivity.java

package com.example.contactstest;import android.Manifest;import android.content.pm.PackageManager;import android.database.Cursor;import android.provider.ContactsContract;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    ArrayAdapter<String> adapter;    List<String> contactList = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ListView contactView = (ListView)findViewById(R.id.contacts_view);        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactList);        contactView.setAdapter(adapter);        if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1);        }else{            readContacts();        }    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        switch (requestCode){            case 1:                if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){                    readContacts();                }else{                    Toast.makeText(this,"You denied the permission",Toast.LENGTH_SHORT).show();                }break;            default:        }    }    private void readContacts(){        Cursor cursor = null;        try{            cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);            if (cursor!=null){                while (cursor.moveToNext()){                    String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));                    String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                    contactList.add(displayName+"\n"+number);                }                adapter.notifyDataSetChanged();            }        } catch (Exception e){            e.printStackTrace();        }finally {            if (cursor != null){                cursor.close();            }        }    }}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ListView        android:id="@+id/contacts_view"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </ListView></LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.contactstest">    <uses-permission android:name="android.permission.READ_CONTACTS"/>    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

这里写图片描述
错误日志

这里写图片描述
展示系统联系人信息

0 0
原创粉丝点击