在我的代码中,我想触发一个隐式意图来打开另一个android库活动。
Intent i = new Intent("Shared library", Uri.parse("https://www.google.com/"));
startActivity(i);
可以说很少有应用程序包含相同的库。如果我触发隐式意图,用户会看到“选择一个应用程序来处理该意图”吗?
还是因为所有应用程序都包含相同的库,它才会打开?
答案 0 :(得分:0)
如果我触发隐式意图,用户会看到“选择一个应用程序来处理该意图”吗?
如果是图书馆:
AndroidManifest.xml
文件,该文件... <activity>
的{{1}}与您的隐式<intent-filter>
匹配然后,任何包含该库且未通过其自身清单阻止Intent
的应用都将成为响应该隐式<activity>
的候选人。如果这些应用中有2+个,则会发生常规的Android隐式Intent
解析:
Intent
调用中为此Intent
结构设置了默认设置,则该默认活动将是已开始的活动还是因为所有应用程序都包含相同的库,它才会打开?
否,因为Android不知道用户想要哪个应用。
如何使用隐式意图但避免“选择一个应用程序来处理此意图”屏幕?
如果用户尚未设置默认活动,则不能。由用户决定哪个应用程序的活动应处理该隐式startActivity()
。
换一种说法:恶意软件作者会爱单方面劫持隐式Intent
并将其全部路由到恶意软件的能力。