我正在测试我的应用程序,Marshmallow 6.0
并且它正在强制关闭android.permission.READ_EXTERNAL_STORAGE
,即使它已经在清单中定义。我在某处读过,如果我在运行时请求许可,那么它不会强制关闭您的应用程序。我也阅读了这个 android 文档,它用于请求运行时权限。
所以,我知道我们可以请求下面的权限,这在 android 文档中提到。
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
onRequestPermissionsResult
上面的代码有一个获取结果的回调方法。
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
}
}
我的问题是在哪里确切地向用户请求权限?我们应该在应用程序启动时使用请求权限还是应该在需要权限时使用?