Zuerst sollten Sie die Dokumentation hierzu lesen: Intents and Intent Filters. Insbesondere der Abschnitt "Empfangen einer impliziten Absicht".
Wie andere festgestellt haben, hat die Verwendung eines benutzerdefinierten Schemas Probleme.
- Sie sind nicht immer so behandelt, als Links
- Sie besitzen sie nicht, wie Sie einen Domain-Namen (Host) besitzen.
So sollen Sie eine Aktivität in ihrem Manifest mit einem Intent-Filter für Ihren Host und verwenden ein echtes Schema definieren. In den Abschnitten "Aktionstest", "Kategorietest" und "Datentest" der Dokumentation Intent & Intent Filters finden Sie Informationen zur Konfiguration für Ihren speziellen Anwendungsfall.
<activity android:name="com.example.app.ActivityOne">
<intent-filter>
<data android:scheme="http"/>
<data android:host="example.com"/>
<data android:path="/activityone"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
Dann können Sie einen Link wie den folgenden verwenden.
http://example.com/activityone?foo=bar
Da dies ein http-Link wird das System den Benutzer auffordern, zu wählen, welche App sie öffnen mit (Ihre Anwendung oder ihren bevorzugten Browser). Wenn sie Ihre App auswählen, startet sie ActivityOne, die die Abfragedaten so erhalten kann.
public class ActivityOne extends Activity {
@Override
public void onResume() {
super.onResume();
Intent intent = getIntent();
Uri uri = intent.getData();
String foo = uri.getQueryParameter("foo");
}
}
Wenn Sie ein benutzerdefiniertes Schema in den Intent-Filter verwenden, dann werden Sie (wahrscheinlich) die einzige Anwendung registrierte diese Absicht zu handhaben und der Benutzer wird nicht Ihre Anwendung auswählen müssen. Es wird Ihnen jedoch viel schwerer fallen, eine Verknüpfung mit einem benutzerdefinierten Schema in eine E-Mail aufzunehmen. Die meisten E-Mail-Clients erkennen nichts mit einem benutzerdefinierten Schema als Link und können nicht angeklickt werden.
'' link –
Dies funktioniert nicht, wenn in E-Mail –
Für E-Mail-Kompatibilität eingebettet sind, verwenden echte Deeplink oder Chrom Absichten: https://developer.chrome.com/multidevice/android/intents –