Activer l'autorisation dans Android par l'utilisateur
Doubleface2022 Messages postés 12 Statut Membre -
Bonjour, j'ai un souci concernant les telechargements dans mon webview Android, bref lorsque je click sur l'objet à télécharger, ceci bug et arrête l'application brutalement. Après vérification, je constate que c'est à cause d'un problème de permission au niveau du paramètre de l'application dans l'autorisation est désactivée. Lorsque j'active manuellement cela dans les paramètres du téléphone, en relançant le téléchargement, cela fonctionne parfaitement. Question : comment activer ce menu stockage automatique lors du téléchargement par l'utilisateur ?
Voici mon code actuel ????
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
int pm[] = null;
if(pm[0]==PackageManager.PERMISSION_GRANTED){
DownloadManager storagemanager=(DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
SharedPreferences prefs=getSharedPreferences("BusinesStore",MODE_PRIVATE);
String uid=prefs.getString("UUID", null);
}
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.allowScanningByMediaScanner();
String cookie = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("Cookie", cookie);
// Notify client once download is completed!
request.setNotificationVisibility(
DownloadManager.Request.VISIBILITY_VISIBLE);
final String exportFileName = URLUtil.guessFileName(
url, contentDisposition, mimetype);
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, exportFileName);
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
// This is important!
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE); // CATEGORY.OPENABLE
intent.setType("*/*");// any application,any extension
Toast.makeText(getApplicationContext(), "Download launched",Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(getApplicationContext(), "Repertoire non détécté", Toast.LENGTH_LONG).show();
}
}
Mes permissions dans le fichier manifeste
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM"/>
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Android / Chrome 99.0.4844.73
2 réponses
-
Hello,
Tu ne peux pas le faire automatiquement, tu es obligé de demander l'autorisation à l'utilisateur. Ce qui veut dire que, s'il refuse (il a le droit), tu ne dois pas utiliser la fonctionnalité.
Pour plus d'infos: https://developer.android.com/training/permissions/requesting
-
Bonjour et merci pour la réaction, justement je sais qu'il faut demander l'autorisation à l'utilisateur lors du téléchargement, mais quel code écrire pour ça ? J'ai essayé les sharePreference sans succès et RequestPermission,
je vais consulter votre lien envoyé