2017-07-04 140 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

相关问题