19

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

4

3 回答 3

13

在您的清单中,在您要处理来自消息应用程序中单击的链接的传入数据的 Activity 下,定义如下内容:

<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=""是确保 Activity 对其中包含的任何数据做出反应的内容:

<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更改)。

于 2013-04-21T04:32:57.260 回答
5

向您的应用添加一个意图过滤器,用于侦听遵循您希望启动应用的格式的链接。

但是,这将是一个全局监听器,任何符合格式的链接甚至在 SMS 应用程序之外都会触发您的应用程序。因此,如果用户在 Web 浏览器中点击类似的链接,您的应用程序将尝试响应它。

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

于 2013-04-21T04:14:58.600 回答
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>

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

在此处查看更多详细信息。

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

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

关于这里的更多信息。manifestPlaceholders

于 2017-11-21T10:05:54.867 回答