Bonjour à tous,
Je développe actuellement une application hybride avec Cordova, (pas PhoneGap mais la base est la même), et je suis amené à télécharger un fichier .mp3.
Je procède au téléchargement et à l'enregistrement du fichier dans la mémoire du téléphone sans problème, mais le média n'apparait pas dans les lecteurs de musique. J'ai recherché le problème et j'ai trouvé qu'il fallait donc lancer un "Media Scan" pour que le fichier mp3 soit détecter par les lecteurs.
J'ai donc créé le plugin suivant, grâce à tout ce que j'ai pu trouver sur internet:
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class MediaScanner extends CordovaPlugin { public boolean execute(final String action, JSONArray args, CallbackContext callbackContext) throws JSONException { Log.i("Call", "execute() ==> action=" + action); if(action.equals("mediaScanner")) { Log.i("Call", "OK, on tente un scan..."); try { Log.i("Call", "On entre dans le try..."); String absolutePath = args.getString(0); //_Get the path of the media to scan return this.mediaScanner(absolutePath, callbackContext); } catch (JSONException e) { Log.i("Call", "OOPS ! On est dans le catch !"); e.printStackTrace(); callbackContext.error(e.getMessage()); return false; } } else { Log.i("Call", "On sort..."); return false; } } private boolean mediaScanner(String mediaPath, CallbackContext callback) { Log.i("Call", "mediaScanner()"); Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri contentUri = Uri.parse(mediaPath.toString()); mediaScanIntent.setData(contentUri); this.cordova.getActivity().sendBroadcast(mediaScanIntent); return true; } }
Voici mon AndroidManifest.xml
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?xml version='1.0' encoding='utf-8'?> <manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.pandazaur.musicddd" xmlns:android="http://schemas.android.com/apk/res/android"> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true"> <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize"> <intent-filter android:label="@string/launcher_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <action android:name="android.intent.action.ACTION_MEDIA_SCANNER_SCAN_FILE" /> <data android:scheme="file" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> </manifest>
Sauf que j'ai l'impression que ca ne lance pas le scan. Sachant, que j'accède bien a la méthode "mediaScanner()" Sauriez-vous me dire quel est le problème ? SVP
Merci d'avance.
Cordialement.
Partager