When using Android to read SD card data, an error is reported. The reason is that after Android 6.0, in addition to adding read and write permissions in androidmanifest.xml, you also need to manually request permissions when using it.
1. Add read and write permissions to androidmanifest.xml:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2. To manually request permission before reading or writing:
import android.support.v4.app.ActivityCompat;
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
/**
* Call this method before reading or writing to the sd card
* 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
*/
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
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
}
}
Note: activitycompat is the method in android-support-v4.jar.
Similar Posts:
- Permissions required by Vibrator.vibrate: android.permission.VIBRATE
- About multi_ image_ Error reporting for picker
- Solution to the error of “may missing Internet permission” in Android
- Socket failed:EACCES(Permission denied) [How to Solve]
- How to Solve Android Error: java.lang.SecurityException: Permission Denial
- [Solved] android.content.ActivityNotFoundException: Unable to find explicit activity class
- [How to Fix] file_put_contents failed to open stream
- [Solved] PHP write file permission failure: file_put_contents: failed to open stream: Permission denied
- Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at [com.github.adrielcafe:AndroidAudioConverter:0.0.8] AndroidManifest.xml:11:18-50 value=(@string/app_name)