J'essaie de donner la possibilité de définir mon application comme lecteur de musique par défaut, mais j'ai trouvé deux problèmes.Définir mon lecteur de musique comme lecteur de musique par défaut
Le premier est au sujet de la déclaration manifst: Selon l'application Google musique Manifest (manifest) le code pour mettre sur mon activité choisie est:
<activity
android:name=".Dashboard"
android:theme="@style/NoActionBar"
android:screenOrientation="portrait"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content"/>
<data android:host="media"/>
<data android:mimeType="audio/*"/>
<data android:mimeType="application/ogg"/>
<data android:mimeType="application/x-ogg"/>
<data android:mimeType="application/itunes"/>
</intent-filter>
</activity>
Mais si je tente d'ouvrir un fichier musical , mon application ne figure pas dans la liste des applications compatibles (pourquoi?). J'ai donc essayé specyfing l'extension de fichier, de cette façon:
<activity
android:name=".Dashboard"
android:theme="@style/NoActionBar"
android:screenOrientation="portrait"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content"/>
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.mp3" />
<data android:host="*" />
</intent-filter>
</activity>
Ce code fonctionne pour moi, mais je pense est pas la meilleure façon. Il y a une autre activité avec un filtre de contenu important, et je ne sais pas si c'est le problème. C'est la première activité (donc le lancement, une activité de connexion). sa déclaration est Maifest
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:theme="@style/NoActionBar"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.MUSIC_PLAYER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.APP_MUSIC" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
En ce moment je peux mettre mon application par défaut lorsqu'un fichier .mp3 est lancé, mais ici le deuxième problème: Je ne peux pas intercepter le Uri
de Intent
lorsque le mon L'application est sur le fond. J'ai essayé de mettre getIntent().getData()
sur OnCreate, OnResume and OnStart
, mais les données sont toujours null
lorsque le fichier de musique est cliqué et que mon application est en arrière-plan. Bien qu'il ne soit pas nul lorsque mon application n'est pas en arrière-plan. Où/Que dois-je faire pour résoudre?
"Mais ça ne marche pas pour moi" - s'il vous plaît expliquer ce que "ne fonctionne pas pour moi" signifie. "Je ne peux pas intercepter l'Uri depuis Intent lorsque mon application est en arrière-plan" - avez-vous remplacé "onNewIntent()"? – CommonsWare
@CommonsWare Avec "mais ne fonctionne pas pour moi" je veux dire que mon application ne figure pas dans la liste des applications compatibles lorsque j'essaie d'ouvrir un fichier de musique à partir d'un explorateur de fichiers. Et non, je ne remplace pas onNewIntent, dois-je faire? –
"Je ne remplace pas onNewIntent, dois-je faire?" - Si vous avez une instance d'activité qui est en cours de réutilisation, le second 'Intents' suivant est remis à' onNewIntent() ', pas' onCreate() '. "Je veux dire que mon application ne figure pas dans la liste des applications compatibles lorsque j'essaie d'ouvrir un fichier musical à partir d'un explorateur de fichiers" - probablement, votre explorateur de fichiers utilise les valeurs "Uri" avec un Android 6.0 et plus. Android 7.0+ a des restrictions sur l'utilisation de ce régime. – CommonsWare