在SMS上点击链接时启动Android应用程序

时间:2013-04-21 03:57:50

标签: android android-intent sms launching-application

我不知道是否有很多人试过这个,但我正在尝试构建一个应用程序,要求用户点击他/她收到的短信链接,这将启动Android应用程序。在android中有可能吗?如果是,我该怎么做?我知道这可以在IOS中完成。任何建议或帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:13)

在您的Manifest中,在您希望处理来自在消息传递应用程序中单击的链接的传入数据的活动下,定义如下内容:

<activity android:name=".SomeActivityName" >

    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="com.your_package.something" />
    </intent-filter>

</activity>

这里的android:scheme=""将确保活动对其中的任何数据作出反应:

<data android:scheme="com.your_package.something" />

SomeActivityName名称用作插图。当然,您将使用自己的: - )),您可以像这样运行支票:

Uri data = getIntent().getData();
String strData = data.toString();
if (strScreenName.equals("com.your_package.something://"))  {
    // THIS IS OPTIONAL IN CASE YOU NEED TO VERIFY. THE ACTUAL USAGE IN MY APP IS BELOW THIS BLOCK
}

我的应用程序的用法类似:

Uri data = getIntent().getData();
strScreenName = data.toString()
        .replaceAll("com.some_thing.profile://", "")
        .replaceAll("@", "");

我用它来处理我的应用中的Twitter @username 链接的点击次数。我需要删除com.some_thing.profile://@以获取用户名以进行进一步处理。清单代码完全相同(只更改了namescheme)。

答案 1 :(得分:5)

向您的应用添加intent-filter,该应用会监听符合您希望启动应用的格式的链接。

然而,这将是一个全球性的倾听者,即使在SMS应用程序之外,任何符合该格式的链接都会触发您的应用程序。因此,如果用户在网络浏览器中点按类似的链接,您的应用会尝试回复它。

此外,如果您的其他应用程序可以处理此链接,Android将创建一个选择器,允许用户选择他们想要使用的任何应用程序。除此之外,建议用户使您的应用成为此类链接的默认处理程序。

答案 2 :(得分:0)

  <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE"
        <data android:scheme="https" android:host="${hostName}" android:pathPattern="/.*" />
  </intent-filter>

以前的答案都可以,但不要忘记指定模式。

See more details here.

还要在Gradle文件中定义您的主机名,如:

android {
    defaultConfig {
        manifestPlaceholders = [hostName:"subdomain.example.com"]
    }
}

有关manifestPlaceholders here.

的更多信息