当我试图使用android studio从手机访问联系人时,程序崩溃
当我使用这行代码时,程序崩溃:当我试图使用android studio从手机访问联系人时,程序崩溃,android,Android,当我使用这行代码时,程序崩溃: Cursor Cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT\u URI,null,null,null) 以下是我得到的错误: ---------碰撞开始07-28 15:01:42.622527-2527/com.example.mateusjose.contacts E/AndroidRuntime:FATAL 例外:主进程:com.example.mateusjose.c
Cursor Cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT\u URI,null,null,null)代码>
以下是我得到的错误:
---------碰撞开始07-28 15:01:42.622527-2527/com.example.mateusjose.contacts E/AndroidRuntime:FATAL
例外:主进程:com.example.mateusjose.contacts,PID:2527
java.lang.RuntimeException:无法启动活动
ComponentInfo{com.example.mateusjose.contacts/com.example.mateusjose.contacts.MainActivity}:
java.lang.SecurityException:权限拒绝:打开提供程序
com.android.providers.contacts.contacts提供程序2来自
ProcessRecord{5be2630 2527:com.example.mateusjose.contacts/u0a85}
(pid=2527,uid=10085)需要android.permission.READ_联系人或
android.permission.WRITE_联系人位于
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)处
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
位于android.os.Handler.dispatchMessage(Handler.java:102)
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)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)上
by:java.lang.SecurityException:权限拒绝:打开提供程序
com.android.providers.contacts.contacts提供程序2来自
ProcessRecord{5be2630 2527:com.example.mateusjose.contacts/u0a85}
(pid=2527,uid=10085)需要android.permission.READ_联系人或
android.permission.WRITE_联系人位于
android.os.Parcel.readException(Parcel.java:1683)位于
android.os.Parcel.readException(Parcel.java:1636)位于
android.app.ActivityManagerProxy.getContentProvider(ActivityManagerActive.java:4169)
在
android.app.ActivityThread.acquireProvider(ActivityThread.java:5434)
在
android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2267)
在
android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1515)
位于android.content.ContentResolver.query(ContentResolver.java:514)
位于的android.content.ContentResolver.query(ContentResolver.java:472)
com.example.mateusjose.contacts.MainActivity.onCreate(MainActivity.java:29)
位于android.app.Activity.performCreate(Activity.java:6662)
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
在
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)处
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
位于android.os.Handler.dispatchMessage(Handler.java:102)
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)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
您需要在清单中添加以下内容:
对于API 23+,您需要请求用户许可才能访问联系人。有关如何询问的更多详细信息,请参阅。您需要在清单上添加以下内容:
对于API 23+,您需要请求用户许可才能访问联系人。有关如何询问的更多详细信息,请参阅。使用运行时权限并重试。若要查明问题是否由运行时权限引起,请转到“设置”中的“应用信息”并检查权限列表。如果禁用了“联系人”权限,请打开它。使用运行时权限并重试。若要查明问题是否由运行时权限引起,请,只需转到“设置”中的“应用程序信息”并检查权限列表。如果禁用了“联系人”权限,请打开它。如果应用程序崩溃,并且您使用的是Android Studio,则会出现崩溃日志(->Android Monitor)。请分享!缺少权限或您没有请求您是ANdroid 23+。按照@0X0nosugar说的做,显示崩溃日志请添加崩溃日志。如果应用程序崩溃,而你使用的是Android Studio,那么就会有一个崩溃日志(->Android Monitor)。请分享!缺少权限或您没有请求您是ANdroid 23+。按照@0X0nosugar说的做,显示崩溃日志请添加崩溃日志。没有足够的信息就无法帮助他人您是否仅在确保授予权限后才执行查询操作?否。是否有方法在运行时授予此权限?是,请查看答案上的链接。您是否仅在确保已授予权限后才执行查询操作?否。是否有方法在运行时授予此权限?是的,请查看答案上的链接。
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();
}
}