Android Deep Linking mit benutzerdefiniertem URI

Ich habe Folgendes in meinem Manifest definiert:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app.package">
...
    <activity
        android:name="app.myActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        <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:host="www.example.com"
                android:pathPrefix="/gizmos"
                android:scheme="http" />
            <!-- note that the leading "/" is required for pathPrefix-->
            <!-- Accepts URIs that begin with "example://gizmos”-->
            <data
                andr,oid:host="gizmos"
                android:scheme="example" />
        </intent-filter>
    </activity>
 ...

Und ich habe mein onCreate () als solches definiert:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    Uri data = intent.getData();
    if (data != null) {
        Log.d("URI",data.toString());            
    }
}

Dies steht im Einklang mit der Android-Dokumentation: Android Deep Linking

So ist die Frage:

Wie teste ich die URI-Deep-Linking-Funktion? Laut Dokumentation führe ich so etwas wie

adb shell am start -W -a android.intent.action.VIEW -d "beispiel: // gizmos" com.app.package

Aber dies erzeugt:

Error: Aktivität nicht gestartet, Absicht kann nicht aufgelöst werden {act = android.intent.action.VIEW dat = example: // gizmos flg = 0x10000000 pkg = com.app.package}

Ich habe auch versucht, die Shell mit dem Namen und der Referenz der Aktivität, der Launcher-Aktivität und das Paket leer gelassen. Das einzige, was ich zur Arbeit bringen kann, ist:

adb shell am start -W -a android.intent.action.VIEW -d "http: //www.example.com/gizmo"

Aber auch wenn ich das in Gang gesetzt habe, heißt das nicht, dass es in anderen Apps funktionieren wird. BENUTZERDEFINIERTE URIs (z. B. // Gizmos) können in anderen Apps wie Google Mail und WhatsApp nicht angeklickt werden. Daher ist das Testen im Android-Ökosystem ebenfalls problematisch.

Die Antwortan dieser Stapelüberlauffrage ist nicht akzeptabel, da es die Frage nicht beantwortet, sondern nur die Verwendung der http: // -Version fördert. Ich möchte, dass das Schema example: // funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage