2017-02-13 22 views
1

我使用下面的聯繫獲取應用程序我得到Android的運行時代碼:致命異常:主要錯誤的線下沒有17.獲取的Android運行時:嚴重異常

package com.example.alpesh_pc.contactlist; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.widget.Toast; 

public class MainActivity extends Activity 
{ 
    public Cursor cursor; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     cursor=this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     if(cursor.getCount()>0) 
     { 
      Toast.makeText(this, "Seccess", Toast.LENGTH_LONG).show(); 
     } 

    } 
} 

是我logcat的

E/AndroidRuntime:致命異常:主 工藝:com.example.alpesh_pc.contactlist,PID:3833 了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.alpesh_pc.contactlist/COM。 examp le.alpesh_pc.contactlist.MainActivity}:java.lang.SecurityException:Permission Denial:從ProcessRecord {6970ad0 3833:com.example.alpesh_pc.contactlist/u0a67}中打開提供程序com.android.providers.contacts.ContactsProvider2(pid = 3833, uid = 10067)需要android.permission.READ_CONTACTS或android.permission.READ_CONTACTS at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android .os.Looper.loop(Looper.java:154) at android.app.Activi tyThread.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) 由:java.lang.SecurityException:Permission Denial:從ProcessRecord中打開提供程序com.android.providers.contacts.ContactsProvider2 {6970ad0 3833:com.example .alpesh_pc.contactlist/u0a67}(pid = 3833,uid = 10067)需要android.permission.READ_CONTACTS或android.permission.WRITE_CONTACTS 在android.os.Parcel.readException(Parcel.java:1683) at android.os。 parcel.readException(Parcel.java:1636) at 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.java:1515) (MainActivity.java: at android.content.ContentResolver.query(ContentResolver.java:514) at android.content.ContentResolver.query(ContentResolver.java:472) at com.example.alpesh_pc.contactlist.MainActivity.onCreate(MainActivity.java: 17) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at 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) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java :6077) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os。java.lang.reflect.Method.invoke(Native Method) ZygoteInit.main(ZygoteInit.java:755) Application termi NAT的。

+0

請分享您的logcat –

+0

請再次檢查這個問題我有logcat的修改它。謝謝。 @TahmidRahman –

+0

請檢查我的答案 –

回答

0

中的Manifest.xml檢查權限以及放運行許可API級別23或更象:

的清單文件:

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

和運行時權限檢查:

permission_tutorial

+0

我已經在清單文件中添加了此權限。 –

+0

檢查permission_tutorial鏈接並將其放入您的代碼中 –

1

添加權限 <uses-permission android:name="android.permission.READ_CONTACTS" />在Android清單XML

+0

我已經在清單文件中添加了此權限。 –

0

我想你使用的是Marshmallow OS(Android版本6)或任何需要運行時權限檢查的設備。

您是否嘗試過這個?

​​

和處理權限請求響應

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
      && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      // permission was granted, yay! Do the 
      // contacts-related task you need to do. 

     } else { 

      // permission denied, boo! Disable the 
      // functionality that depends on this permission. 
     } 
     return; 
    } 

    // other 'case' lines to check for other 
    // permissions this app might request 
    } 
} 

不過如果任何困惑仍然存在,你可能有一個看here

+0

MY_PERMISSIONS_REQUEST_READ_CONTACTS無法解析符號 –

+0

它是'requestCode',您可以在您的活動中初始化如'public static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 0;'這裏0不是必須的,你可以設置任何'int' –