Ich versuche, die Möglichkeit zu geben, meine App als Standard-Musik-Player zu setzen, aber ich fand zwei Probleme.Richtet meine Musik-Player als Standard-Musik-Player
Die erste über die manifst Erklärung: Laut Google Musik-App-Manifest (manifest) der Code auf meiner ausgewählten Aktivität zu setzen ist:
<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>
Aber wenn ich versuche, eine Musik-Datei zu öffnen , meine Anwendung ist nicht in der Liste der kompatiblen Apps (warum?). Also habe ich versucht specyfing die Dateierweiterung, auf diese Weise:
<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>
Dieser Code arbeitet für mich, aber ich denke nicht der beste Weg ist. Es gibt eine andere Aktivität mit einem wichtigen Inhaltsfilter, und ich weiß nicht, ob es das Problem ist. Es ist die erste Aktivität (also der Start, eine Login-Aktivität). seine Maifest Erklärung ist
<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>
In diesem Moment, als ich meine App als Standard festlegen kann, wenn eine MP3-Datei gestartet wird, aber hier das zweite Problem: Ich kann die Uri
von Intent
nicht abfangen, wenn die meiner App ist im Hintergrund. Ich habe versucht, getIntent().getData()
auf OnCreate, OnResume and OnStart
zu setzen, aber die Daten sind immer null
, wenn die Musikdatei cliked und meine app ist auf Hintergrund. Es ist zwar nicht null, wenn meine App nicht im Hintergrund ist. Wo/Was muss ich tun, um zu lösen?
"Aber es funktioniert nicht für mich" - bitte erklären, was "für mich nicht funktioniert" bedeutet. "Ich kann den Uri nicht absichtlich abfangen, wenn meine App im Hintergrund ist" - haben Sie 'onNewIntent()' überschrieben? – CommonsWare
@CommonsWare Mit "Aber funktioniert nicht für mich" meine ich, dass meine Anwendung nicht in der Liste der kompatiblen Apps ist, wenn ich versuche, eine Musikdatei aus einem Datei-Explorer zu öffnen (ich benutze es file explore). Und nein, ich überschreie onNewIntent nicht, muss ich tun? –
"Ich überschreibe onNewIntent nicht, muss ich tun?" - Wenn Sie eine Aktivitätsinstanz haben, die wiederverwendet wird, werden die zweite und nachfolgende 'Intents' an 'onNewIntent()' übergeben, nicht an' onCreate() '. "Ich meine, dass meine Anwendung nicht in der Liste der kompatiblen Apps enthalten ist, wenn ich versuche, eine Musikdatei aus einem Datei-Explorer zu öffnen" - vermutlich verwendet Ihr Datei-Explorer 'Uri'-Werte mit einem' Datei'-Schema, zumindest auf Android 6.0 und älter. Android 7.0+ hat Einschränkungen bei der Verwendung dieses Schemas. – CommonsWare