2017-07-04 126 views
-2

在詢問用戶運行時權限的同時,獲取以下覆蓋對話框。 Extra permission request在請求運行時權限時關閉應用程序

下面是我的代碼:

if(ContextCompat.checkSelfPermission(MainActivity.this,permissions) == PackageManager.PERMISSION_DENIED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permissions)) { 
      ActivityCompat.requestPermissions(MainActivity.this,new String[] {permissions}, requestCode); 
     } else 
      Toast.makeText(MainActivity.this,"Need Permission",Toast.LENGTH_LONG); 
    } 

清單

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

許可,我請求是CALL_PHONE。

TIA

+0

你在清單申報呢? – Alessio

+0

另外,您錯誤地使用了shouldShowRequestPermissionRationale(),因爲它第一次會是false,然後是true,然後再次是false。您應該在checkSelfPermission()調用後立即從第一次直接調用ActivityCompat.requestPermissions()。至少讀過Android [示例](https://developer.android.com/training/permissions/requesting.html),還有代碼片段。這是非常基本的。 – Alessio

+1

崩潰日誌在哪裏?請包括它。 – Tigger

回答

-1

也許您沒有爲AndroidManifest添加描邊? 我的確如下: 添加了對AndroidManifest的筆劃

然後檢查程序的運行時權限。

MainActivity: verifyStoragePermissions(this);

public static void verifyStoragePermissions(Activity activity) { 
    // Check if we have write permission 
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); 
    if (permission != PackageManager.PERMISSION_GRANTED) { 
     // We don't have permission so prompt the user 
     if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     } else { 
      ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); 
     } 
    } 
} 

然後檢查結果MainActivity:

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case Utils.REQUEST_EXTERNAL_STORAGE: { 
      // 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 
    } 
} 
+0

是的,我在Manifest文件中添加了使用權限。 Chakri

+0

將上下文更改爲活動。我們需要錯誤日誌。 – xdamir79

+0

控制檯中沒有錯誤。在顯示上述彈出窗口後,應用程序正在關閉。如果用戶點擊確定,它會將他重定向到權限設置,以便他可以啓用它,否則應用程序正在關閉 – Chakri

相關問題