在开发安卓应用时,通过需要访问SDCARD、外部存储器。
当遇到 这个错误时,通常是由于以下几种原因导致的,解决方法如下:
1. AndroidManifest.xml文件中未定义以下权限: 解决方法是添加以下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2. 在调试的设备或模拟器中,App访问Storage的权限是关闭的: 解决方法是: 在设置->应用->找到并点击你的应用->权限->看到“存储”或“Storage”这一项了吧,把它打开即可。
3. 从API 23开始,还需要通过代码申请权限: // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE };
/** * Checks if the app has permission to write to device storage * * If the app does not has permission then the user will be prompted to grant permissions * * @param activity */ public static void verifyStoragePermissions(android.app.Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != android.content.pm.PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions( activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE ); } }
|