我不知道有多少人尝试过这个,但我正在尝试构建一个应用程序,需要用户在收到的短信中点击链接,这将启动Android应用程序。 在Android中是否有可能实现这一点? 如果是,我该如何做? 我知道在IOS中可以实现这一点。 任何建议或帮助将不胜感激。 谢谢。
我不知道有多少人尝试过这个,但我正在尝试构建一个应用程序,需要用户在收到的短信中点击链接,这将启动Android应用程序。 在Android中是否有可能实现这一点? 如果是,我该如何做? 我知道在IOS中可以实现这一点。 任何建议或帮助将不胜感激。 谢谢。
<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://
和@
,以获取用户名进行进一步的处理。清单代码与之前完全相同,只是name
和scheme
已更改。
在你的应用程序中添加一个意图过滤器(intent-filter),以便监听符合你所需格式的链接并启动你的应用程序。
然而,这将是一个全局监听器,任何符合该格式的链接即使在短信应用之外也会触发你的应用程序。因此,如果用户在Web浏览器中点击类似的链接,你的应用程序将尝试响应它。
此外,如果除了你的应用程序之外还有另一个应用程序可以处理此链接,Android 将创建一个选择器,允许用户选择他们想要使用的任何应用程序。你无法做任何事情来解决这个问题,除了建议用户将你的应用程序设置为处理此类链接的默认程序。
<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
的更多信息在这里。
if (strData.equals
而不是if (strScreenName.equals
。 - user2342558