La raison principale pour laquelle je poste ici est que je suis actuellement bloqué sans un ordinateur qui peut exécuter un émulateur, j'ai dû envoyer l'APK sur mon téléphone pour le tester. Même si mon téléphone est connecté à mon ordinateur ou si un émulateur tiers est en cours d'exécution, cela ne fonctionnera pas. Pour cette raison ... Je n'ai pas de journaux d'erreurs. L'application est un gestionnaire de mot de passe simple, et toutes les autres fonctions fonctionnent jusqu'à présent. J'essayais d'ajouter une fonction d'exportation, je n'arrive pas à écrire quoi que ce soit. J'ai vérifié d'autres questions et diverses sources en ligne, mais je n'arrive pas à comprendre ce qui pourrait en être la cause. Lorsque la méthode est appelée, elle ne fait rien pour autant que je sache. Je m'excuse si quelque chose me manque, ou s'il y avait effectivement une autre question avec le même problème. Je n'ai rien trouvé de manquant.La demande d'autorisations d'exécution provoque un crash
Voici la méthode que j'utilise;
EDIT: Le code a été mis à jour pour refléter une meilleure méthode de demandant des autorisations d'exécution, qui a été suggéré here. C'est finalement ce qui fixe l'application.
//Method017: Exports the account info to a .txt file.
public void exportData() throws IOException {
//Opens dialog to request permission.
ActivityCompat.requestPermissions(Main.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
//Method to handle result of permission request.
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//Attempt to write a file to the Download folder.
String content = "hello world";
File file;
FileOutputStream outputStream;
try {
file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "MyCache");
outputStream = new FileOutputStream(file);
outputStream.write(content.getBytes());
outputStream.close();
//According to an online source, this is necessary to make the file viewable on the device.
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(file));
sendBroadcast(intent);
} catch (IOException e) {
e.printStackTrace();
}
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(Main.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
Et mon manifeste:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.brand.psync">
<application
android:allowBackup="true"
android:icon="@drawable/psynclogo"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:screenOrientation="portrait">
<activity android:name=".Main">
<intent-filter>
<action
android:name="android.intent.action.MAIN"
android:screenOrientation="portrait" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<category
android:name="android.intent.category.LAUNCHER"
android:screenOrientation="portrait" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
Désolé de l'absence de journal des erreurs ... mais si je devais, je serais probablement pas besoin de poster ici.
Quelle est la version sdk cible que vous avez mentionnée dans le fichier build.gradle. Si c'est au-dessus de 22, vous devez demander l'autorisation WRITE_EXTERNAL_STORAGE au moment de l'exécution –
Min est 15 mais la cible est 26, et je la teste sur 24 ... Cela pourrait très bien être, je vais y jeter un coup d'oeil. – Prometheus
Si vous ne pouvez pas fournir la trace de la pile, utilisez Toast pour afficher 'e.getMessage()' dans le bloc catch et afficher le message d'erreur. –