【发布时间】:2016-12-30 14:15:54
【问题描述】:
我正在使用内容 URI 来链接应用程序和我开发的其他应用程序中的内容(更像是启动特定活动),但问题是每当从 android 启动器中选择一个应用程序时,URI 的其余部分都会保留使用那个单一的应用程序打开
我正在使用 Linkify 类构建 uri 链接。下面显示了URI的
Pattern inlinkMatcher = Pattern.compile("\\(click[^()]*\\)|\\(you can[^()]*\\)|\\(check here [^()]*\\)");
String inLinkURL = "content://com.n4labs.sexed.providers/hgcontent/";
Pattern inlinkMatcher2 = Pattern.compile("\\(click here to find [^()]*\\)");
Pattern inlinkMatcher3 = Pattern.compile("\\(learn more [^()]*\\)|\\(talk to [^()]*\\)");
boolean yfsinstalled = appInstalledOrNot("com.n4labs.yfs");
String inLinkURL2 = "http://market.android.com/details/?id=com.n4labs.yfs";
if(yfsinstalled)
inLinkURL2 = "content://com.n4labs.yfs.providers/centersearch/";
boolean divainstalled = appInstalledOrNot("com.n4labs.diva");
String inLinkURL3 = "http://market.android.com/details/?id=com.n4labs.diva";
if(divainstalled)
inLinkURL3 = "content://com.n4labs.diva.providers/learn/";
以及对 Linkify 的调用
if(yfsinstalled){
Linkify.addLinks(itemController3.paragraphtext, inlinkMatcher2, inLinkURL2);
}
else
{
Linkify.addLinks(itemController3.paragraphtext, inlinkMatcher2, inLinkURL2, null, mentionFilter);
}
if(divainstalled){
Linkify.addLinks(itemController3.paragraphtext, inlinkMatcher3, inLinkURL3);
}
else
{
Linkify.addLinks(itemController3.paragraphtext, inlinkMatcher3, inLinkURL3, null, mentionFilter);
}
Linkify.addLinks(itemController3.paragraphtext, inlinkMatcher, inLinkURL);
每个应用程序中的提供者都有相应的权限,并按原样导出
<provider
android:name="com.n4labs.diva.providers.HealthGuideContentProvider"
android:authorities="com.n4labs.diva.providers"
android:exported="true">
</provider>
如何确保每个 URI 自动在适当的应用程序中打开,或者至少每次都向用户显示该选项。
我希望我已经足够清楚了。
有人吗?
谢谢。
【问题讨论】:
-
“每个应用程序中的提供程序都具有适当的权限并被导出”——重要的是提供程序为这些
Uri值和对于您期望那些Uri值路由到ACTION_VIEW的活动,<intent-filter>元素是什么样的。 -
MIME 类型为 text/plain,intent 过滤器如下所示:`
` @CommonsWare
标签: android android-contentprovider applinks