I have the following defined in my manifest:
<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 android:host="gizmos" android:scheme="example" /> </intent-filter> </activity> ...
And I have defined my onCreate() as such:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); Uri data = intent.getData(); if (data != null) { Log.d("URI",data.toString()); } }
This is in accordance with the Android documentation: Android Deep Linking
So the question is:
How do I test the URI deep linking? According to the documentation I run something like
adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.app.package
But this produces:
Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=example://gizmos flg=0x10000000 pkg=com.app.package }
I have also tried the shell with the name and reference of the activity, the launcher activity and left the package blank. The only one I can get to work is:
adb shell am start -W -a android.intent.action.VIEW -d "http://www.example.com/gizmos"
But even if I got this going that isn't to say it's going to work within other apps. CUSTOM URI's (e.g. example://gizmos) are not clickable in other apps like Gmail and WhatsApp - so testing within the Android ecosystem is also problematic.
The answer at this stack overflow question is not acceptable since it does not answer the question but rather just encourages the use of the http:// version, I want the example:// scheme to work.