首页 文章

当我尝试使用android studio从手机访问联系人时程序崩溃

提问于
浏览
1

当我使用这行代码时程序崩溃:

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //TextView textView=(TextView) findViewById(R.id.Tv);
        //textView.setText(Name);
        TextView textView=(TextView) findViewById(R.id.Tv);
        //ContentResolver contentResolver=getContentResolver();
        Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
        String Name;
        if(cursor.getCount() > 0){
            while(cursor.moveToNext()){
                Name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                textView.setText(Name);
            }
        }
        cursor.close();
    }
}

这是我得到的错误:

---------崩溃开始07-28 15:01:42.622 2527-2527 / com.example.mateusjose.contacts E / AndroidRuntime:FATAL EXCEPTION:main Process:com.example.mateusjose.contacts, PID:2527 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.mateusjose.contacts / com.example.mateusjose.contacts.MainActivity}:java.lang.SecurityException:Permission Denial:打开提供者com.android.providers ProcessRecord的.contacts.ContactsProvider2 {5be2630 2527:com.example.mateusjose.contacts / u0a85}(pid = 2527,uid = 10085)在android.app.ActivityThread.performLaunchActivity上需要android.permission.READ_CONTACTS或android.permission.WRITE_CONTACTS( ActivityThread.java:2646)在Android.app.A活动中的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)android.app.ActivityThread $ H.handleMessage(ActivityThread.java)的android.app.ActivityThread.-wrap12(ActivityThread.java) 1460)在Android.os.Looper.loop(Looper.java:154)的android.os.Handler.dispatchMessage(Handler.java:102)在android.app.ActivityThread.main(ActivityThread.java:6077)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)引起:java.lang.SecurityException:Permission Denial:从ProcessRecord打开提供程序com.android.providers.contacts.ContactsProvider2 {5be2630 2527:com . example.mateusjose.contacts / u0a85}(pid = 2527,uid = 10085)在android.os.Parcel的android.os.Parcel.readException(Parcel.java:1683)上需要android.permission.READ_CONTACTS或android.permission.WRITE_CONTACTS .readException(Parcel.java:1636)在android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:4169)的android.app.ActivityThread.acquireProvider(ActivityThread.java:5434)android.app.ContextImpl $ ApplicationContentResolver.acquireUnstableProvider( ContextImpl.java:2267)在android.content.ContentResolver.acquireUnstableProvider(ContentResolver.ja) va:1515)在android.content.ContentResolver.query(ContentResolver.java:514)的android.content.ContentResolver.query(ContentResolver.java:472)at com.example.mateusjose.contacts.MainActivity.onCreate(MainActivity.java) :29)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)android.app.Activity.performCreate(Activity.java:6662)位于android.app.Handler的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460)的android.app.ActivityThread.-wrap12(ActivityThread.java)上的.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) .dispatchMessage(Handler.java:102)位于android.app.Looper.loop(Looper.java:154)的android.app.ActivityThread.main(ActivityThread.java:6077),位于java.lang.reflect.Method.invoke(本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) )

2 回答

  • 0

    您需要在清单上添加此内容:

    <uses-permission android:name="android.permission.READ_CONTACTS" />

    对于API 23,您需要请求用户访问联系人的权限 . 有关如何提问的更多详细信息,请参阅this .

  • 0

    使用运行时权限并尝试 . 要查明问题是否是由运行时权限引起的,只需转到设置中的应用程序信息并检查权限列表 . 如果禁用了联系人权限,请启用它 .

相关问题