📅  最后修改于: 2023-12-03 15:40:36.683000             🧑  作者: Mango
在 Android 应用程序中,WRITE_EXTERNAL_STORAGE
权限是一个非常重要的权限,它允许应用程序访问外部存储器,也称为 SD 卡。此权限为危险权限,需要经过用户确认才能使用。
在编写 Android 应用程序时,我们往往需要做一个自我权限检查,以确保应用程序有所需的权限。这样有助于提高应用程序的稳定性和安全性。
下面我们将介绍如何检查自我权限 WRITE_EXTERNAL_STORAGE
。
首先,在 AndroidManifest.xml
文件中声明 WRITE_EXTERNAL_STORAGE
权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在 Android 6.0 及更高版本中,应用程序需要动态请求权限。因此,我们需要在编写应用程序时检查是否具有所需的权限,如果没有则动态请求。
以下是检查自我权限的代码:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// Requesting permission
ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, PERMISSION_REQUEST_CODE);
} else {
// Permission already granted
// Do your work
}
在代码中,我们使用 ContextCompat.checkSelfPermission()
方法来检查应用程序是否具有 WRITE_EXTERNAL_STORAGE
权限。如果没有,则使用 ActivityCompat.requestPermissions()
方法请求权限。如果已经授予权限,则可以继续执行应用程序中的操作。
用户会看到一个对话框来请求权限。当用户回答后,系统会将结果传递给 onRequestPermissionsResult()
方法。因此,我们需要在该方法中处理权限请求结果。
以下是处理权限请求结果的代码:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted
// Do your work
} else {
// Permission denied
// Do something
}
break;
}
}
在上面代码中,我们将检查用户是否已授予权限。如果授予,我们可以继续执行应用程序中的操作。否则,我们可以向用户显示一个消息,指示该功能不可用,或者提供另一种方法。
以上就是检查自我权限 WRITE_EXTERNAL_STORAGE
的步骤。这有助于确保应用程序以安全和可靠的方式访问外部存储器。