Problem mit der Speicherberechtigung in Android 5 bis 13
Posted: 03 Jan 2025, 18:36
Ich erstelle meine App mit native.vue und Java. Ich versuche, Daten im internen Speicher des Geräts zu speichern und zu lesen. Wenn ich diesen Code in Android 10 ausführe, erfolgt keine Berechtigungsanfrage an den Benutzer.
In meiner Manifestdatei definiere ich:
In meiner Java-Datei habe ich:
Mit diesem Code unten zeige ich, dass ich keine Berechtigung habe
}
Also versuche ich, die Erlaubnis zu bekommen mit:
}
Aber wenn ich es unter Android 10 ausführe, wird im Telefon kein Dialogfeld angezeigt.
Unter meinem Blick Methode.
Ich habe mehrere Beiträge zum gleichen Thema gelesen und dies vergeblich getestet.
Problem mit der Speicherberechtigung bei Geräten mit Android 10+ https://medium.com/@kezzieleo/manage- external-storage-permission-android-studio-java-9c3554cf79a7
In meiner Manifestdatei definiere ich:
Code: Select all
Code: Select all
import static androidx.core.content.ContextCompat.startActivity;
import android.Manifest;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.StrictMode;
import android.provider.OpenableColumns;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.activity.result.ActivityResultLauncher;
import android.provider.Settings;
import android.content.ContentValues;
import android.provider.MediaStore;
import android.os.Environment;
import java.io.OutputStream;
import android.util.Log;
import android.widget.Toast;
Code: Select all
public static boolean checkStoragePermissions(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// Android est 11 (R) ou supérieur
Log.d("createDir", "Android est 11 (R) ou supérieur");
return Environment.isExternalStorageManager();
} else {
// Inférieur à Android 11
Log.d("createDir", "Inférieur à Android 11");
int write = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE);
int read = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE);
return read == PackageManager.PERMISSION_GRANTED && write == PackageManager.PERMISSION_GRANTED;
}
Also versuche ich, die Erlaubnis zu bekommen mit:
Code: Select all
public static boolean requestForStoragePermissions(Activity activity,
ActivityResultLauncher storageActivityResultLauncher) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
intent.setData(uri);
if (storageActivityResultLauncher != null) {
storageActivityResultLauncher.launch(intent);
} else {
activity.startActivity(intent);
}
return true; // Requête réussie
} else {
Log.d("createDir", "Inférieur à Android 11");
Log.d("createDir", activity.toString());
ActivityCompat.requestPermissions(
activity,
new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
},
STORAGE_PERMISSION_CODE);
return true; // Requête réussie
}
} catch (Exception e) {
e.printStackTrace();
return false; // Erreur dans la requête
}
Aber wenn ich es unter Android 10 ausführe, wird im Telefon kein Dialogfeld angezeigt.
Unter meinem Blick Methode.
Code: Select all
requestStoragePermissions() {
const activity = Application.android.foregroundActivity || Application.android.startActivity;
let ctx = Utils.android.getApplicationContext();
let execc = com.ecodev.Mifi.MyUtils.requestForStoragePermissions(activity, null);
let exec = com.ecodev.Mifi.MyUtils.checkStoragePermissions(ctx);
console.log('requestForStoragePermissions' + execc);
console.log(exec);
},
Problem mit der Speicherberechtigung bei Geräten mit Android 10+ https://medium.com/@kezzieleo/manage- external-storage-permission-android-studio-java-9c3554cf79a7