Trying to enable deep linking to android app, testing intent can't launch activity
Solution 1
In your manifest you defined your scheme as "http" but in your intent constructor you are using "example."
Solution 2
Try skipping package param entirely. I had exactly same problem and it works.
adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos"
Solution 3
Comment out the second data part from your Android Manifest. As per google documentation of deep link :
"Intent filters may only contain a single data element for a URI pattern. Create separate intent filters to capture additional URI patterns."
Solution 4
The problem is you have one intent filter for 2 types of deep links:
<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" />
<!-- Accepts URIs that begin with "example://gizmos”-->
<data
android:host="gizmos"
android:scheme="example" />
</intent-filter>
<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-->
</intent-filter>
</activity>
And you will be able to use both on the ADB shell. Please see my full answer here
Solution 5
Simply try as follows
Command:
adb shell am start -d your-deep-link
Example:
adb shell am start -d rmagazine://opensetting/v1
Brian
Updated on July 27, 2022Comments
-
Brian almost 2 years
I'm trying to enable deep linking so that certain links launch my app.
I read this turotial https://developer.android.com/training/app-indexing/deep-linking.html and following it pretty close but when I try to test it by using adb to send the VIEW intent to the app I just get the error
Error: Activity not started, unable to resolve Intent { act=android.intent.actio n.VIEW dat=example://gizmos flg=0x10000000 pkg=com.myapp.DeepLinkActivity }
DeepLinkActivity.java
public class DeepLinkActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getAction() == Intent.ACTION_VIEW) { Uri uri = getIntent().getData(); } } }
Android Manifest declaring deeplink activity
<activity android:name="com.myapp.DeepLinkActivity" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="gizmos" android:scheme="example" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos” --> <data android:host="www.example.com" android:pathPrefix="gizmos" android:scheme="http" /> </intent-filter> </activity>
ADB command to send the view intent
adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.myapp.DeepLinkActivity
But I don't think I even need the full path to the activity
adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.myapp
-
Ankit over 9 yearsHi soundsofpolaris, I'm doing the same thing and getting same result as @Brain, can you tell me whats the problem now.
-
Divya over 8 yearsHi, did u solve this issue. If yes could you please share the code.
-
soundsofpolaris over 8 years@Divya according to the manifest, it should be: example.com, which is putting the "scheme" and the "host" together. But in his shell code it says example://gizmo. If you wanted that, the manifest should have "example" as the scheme, and "gizmo" as the host.
-
Gaurav Arora about 8 yearsHave anyone solved it ? I have same problem. But not able to solve
-
Gaurav Arora almost 7 yearsI have the same problem
-
Someone Somewhere about 5 yearsI just reproduced this fix - skipping the package triggered the deep link. Unfortunately, currently intent.getData() is returning null, which it shouldn't.
-
CoolMind over 4 yearsThanks, the error disappeared. In emulator it opens Google Chrome with the link, if
android:pathPrefix=".*"
, and a dialog to choose Chrome or my app, ifandroid:pathPrefix="/something"
. -
CoolMind over 4 years@SomeoneSomewhere, in my case it returns part of a request after
/
, as expected.