通过链接或电子邮件启动Android应用程序

时间:2013-02-19 14:46:00

标签: android email launch

我一直试图通过电子邮件链接或某些社交网站上的帖子启动应用程序。问题是在android上的某些设备或某些gmail应用程序中没有显示我指定的锚标签或链接。

我设置为我的活动的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="myappname" />

我正在发送带有此锚标记的电子邮件

myappname://processtobedone/?id=1

它适用于我在华为设备上的电子邮件应用程序,但在设备的默认gmail应用程序中它没有显示它有链接,并且在某些设备中默认情况下它附加https:作为标记的后缀并启动浏览器。

4 个答案:

答案 0 :(得分:14)

您可以使用<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.this-so-does-not-exist.com"
        android:path="/something"
        android:scheme="http"/>
</intent-filter>

然后,指向http://www.this-so-does-not-exist.com/something的链接会在拥有您应用的设备上显示您的应用(在选择器中,以及Web浏览),并会在没有您的应用的设备上调出您的网页

答案 1 :(得分:2)

创建一个真正的链接(http :),你控制的网站,如亚马逊s3上的静态网站,使用该网站上的JavaScript检测Android用户代理,然后重定向到锚标记的链接。

答案 2 :(得分:0)

<activity
android:name=".SplashEmailActivity"
android:screenOrientation="portrait"
android:exported="true"
android:launchMode="singleInstance" android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize" >

<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="your.domain.name"/>

</intent-filter>

</activity>

答案 3 :(得分:0)

例如,要在设备myappname://processtobedone/?id=1上触发设备上的应用程序链接,最简单的方法是创建一个基本的html页面文件(名称为deeplink_test.html)并发送到您的电子邮件,之后打开此电子邮件,然后单击到html文件,然后使用Chrome浏览器打开并单击锚点链接。

<html>
    <head>
        <title>DeepLink Test</title>
    <head>
    <body>
        <a href="myappname://processtobedone/?id=1">run deeplink</a>
    <body/>
</html>