How do I open my web app links by deeplinking? - android

I have converted my website into app and I use [https://app.sarkaribank.com][1] type of links to load in webview. I want to use deep linking. Below is my manifest.xml file.
<activity
android:name="com.sarkaribank.Activities.BottomActivity"
android:screenOrientation="portrait"
android:label="#string/app_name"
android:theme="#style/AppTheme.NoActionBar">
<intent-filter android:label="SarkariBank">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="https"
android:host="app.sarkaribank.com"
android:pathPrefix="/*.*"/>
</intent-filter>
</activity>
I want that my app should open whenever someone clicks any of these kinds of link
https://app.mysitename.com

<activity>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="https" android:host="app.sarkaribank.com"/>
<data android:scheme="http" android:host="app.sarkaribank.com"/>
</intent-filter>
</activity>
https://developer.android.com/training/app-links/verify-site-associations.html

Related

Android applink disambiguation dialog when multiple domain declared

Hi I'm trying to include the app-links as described here:
https://developer.android.com/training/app-links
Everything works fine with a single domain, but when I try to include multiple domains Android's system always shows the disambiguation dialog.
Is there any workaround to include multiple domains (not SUBdomains), in my manifest file avoiding to show disambiguation dialog?
Here my AndroidManifest.xml
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="#string/activity_name" android:launchMode="singleInstance" android:name="MainActivity" android:theme="#android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="#string/launcher_name">
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="exampl1.it" android:scheme="http" android:path="/applink"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="example1.it" android:scheme="https" android:path="/applink"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="p.example2.it" android:scheme="http"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="p.example2.it" android:scheme="https"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="example3.com" android:scheme="http" android:path="/path/to-deep"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="example3.com" android:scheme="https" android:path="/path/to-deep"/>
</intent-filter>
</activity>
See my answer at https://stackoverflow.com/a/60342565/2914140. I divided all <data> tags into attributes:
<data android:scheme="https" />
<data android:host="example.com" />

Android deeplinks not working properly

I have to activities that i need to deep-link them to two URLS, but every time i click a URL it shows the two activities at the same time, so How can i set the intent-filter to only 1 specific URL ?
1st URL http://www.sample.com/newcars/models/33
and its activity
<activity
android:name=".ui.activities.NewCarModelEngineActivity"
android:label="#string/newCars"
android:screenOrientation="sensorPortrait">
<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="sample.com"
android:pathPrefix="/newcars/engines/"
android:scheme="http"/>
<data
android:host="www.sample.com"
android:pathPrefix="/newcars/engines/"
android:scheme="http"/>
<data
android:host="newengine"
android:pathPattern="/..*/..*/..*"
android:scheme="sample"></data>
</intent-filter>
</activity>
2nd URL http://www.sample.com/usedcars/engines/9876543
and its activity
<activity
android:name=".ui.activities.UsedCarEngineDetailsActivity"
android:label="#string/usedCars"
android:screenOrientation="sensorPortrait">
<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="sample.com"
android:pathPrefix="/usedcars/engines/"
android:scheme="http"/>
<data
android:host="www.sample.com"
android:pathPrefix="/usedcars/engines/"
android:scheme="http"/>
<data
android:host="usedengine"
android:pathPattern="/..*/..*/..*"
android:scheme="sample"></data>
</intent-filter>
</activity>
Try to put your scheme="sample" data in a separate intent filter. It seems like a bug, but sometimes Android just ignores the path prefix when another is present and empty or with wildcards.
You can also use host="*sample.com" to match both sample.com and www.sample.com.
Ex for your first activity:
<activity
android:name=".ui.activities.NewCarModelEngineActivity"
android:label="#string/newCars"
android:screenOrientation="sensorPortrait">
<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="http"
android:host="*sample.com"
android:pathPrefix="/newcars/engines/" />
</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:scheme="sample"
android:host="newengine"
android:pathPattern="/..*/..*/..*" />
</intent-filter>
</activity>

How to open installed android app when i click a url in my email?

<activity
android:name=".ActivateActivity"
android:configChanges="orientation"
android:windowSoftInputMode="adjustPan">
<intent-filter >
<data android:host="www.testlink.com.qa" android:pathPrefix="/templates/home.aspx/" android:scheme="http"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
this is my code....its not working when click the link (www.testlink.com.qa) from my email.
but it work when i call from another app using Uri.parse("http://www.testlink.com.qa/templates/home.aspx")
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:host="www.testlink.com.qa" android:path="www.testlink.com.qa/templates/home.aspx" android:scheme="http"></data>
</intent-filter>
Email link http://www.testlink.com.qa/templates/home.aspx

Launch Android activity when click on href in Chrome browser

I want to open my app's LoginActivity when click on a <a href="www.myhost.com"/> in some web in Chrome browser app. I have this code but it is not working:
<activity android:label="#string/app_name" android:launchMode="singleTask"
android:name=".activities.LoginActivity" android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<data android:scheme="http" android:host="myhost.com"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
What am I doing wrong?
Thanks.
You need to set it up like this :
<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="example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
<data
android:host="www.example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
</intent-filter>
Notice that in your case, you would need to use android:pathPrefix instead of android:path.

Opening android browser from command line with local url

How can I open a browser intent and point it to a local url in Android?
am start -a android.intent.action.VIEW -d file:///data/local_page/index.html
Doesn't work. This only seems to work with http:// prefix.
Try adding the component part:
am start ... -n com.android.browser/.BrowserActivity ...
That made a local HTML file display in the browser for me, on Android 2.2 (HTC Desire) and 2.3 (Sony-Ericsson Xperia)
Try adding -t text/html
These are the filters the browser uses:
(Not sure what android:scheme="inline" is for... does anyone know?)
<activity android:name="BrowserActivity" android:label="#string/application_name" android:launchMode="singleTask" android:alwaysRetainTaskState="true" android:configChanges="orientation|keyboardHidden" android:theme="#style/BrowserTheme" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.speech.action.VOICE_SEARCH_RESULTS"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<!--
For these schemes were not particular MIME type has been supplied, we are a good candidate.
-->
<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="http"/>
<data android:scheme="https"/>
<data android:scheme="about"/>
<data android:scheme="javascript"/>
</intent-filter>
<!--
For these schemes where any of these particular MIME types have been supplied, we are a good candidate.
-->
<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:scheme="http"/>
<data android:scheme="https"/>
<data android:scheme="inline"/>
<data android:mimeType="text/html"/>
<data android:mimeType="text/plain"/>
<data android:mimeType="application/xhtml+xml"/>
<data android:mimeType="application/vnd.wap.xhtml+xml"/>
</intent-filter>
<!-- We are also the main entry point of the browser. -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
<!--
The maps app is a much better experience, so it's not worth having this at all... especially for a demo! <intent-filter android:label="Map In Browser"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/postal-address" /> </intent-filter>
-->
<intent-filter>
<action android:name="android.intent.action.WEB_SEARCH"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme=""/>
<data android:scheme="http"/>
<data android:scheme="https"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_SEARCH"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="#xml/searchable"/>
</activity>

Categories

Resources