何时在运行时请求 Android Marshmallow 6.0 的权限?
2022-09-04 20:05:01
我正在测试我的应用程序,即使它已经在清单中定义,它也被强制关闭。在某个地方,我读到过,如果我在运行时请求权限,那么它不会强制关闭您的应用程序。我也读过这个Android文档,这是用于请求运行时权限的。Marshmallow 6.0
android.permission.READ_EXTERNAL_STORAGE
因此,我开始知道我们可以请求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) {
}
}
我的问题是在哪里确切地请求用户的权限?我们应该在应用程序开始时使用请求权限,还是应该在需要权限时使用它?