我通过代码创建了一些活动的快捷方式,其中大多数都不能 打开相关活动。我发现它只有在我添加时才有效 过滤CREATE_SHORTCUT到活动。为什么呢?
<activity
android:name=".ui.Main"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
(在Go Launcher&amp; MIUI 2.3.7中测试)
我有下面的日志,我应该添加MAIN过滤器吗?
09-27 13:34:44.075:E / Launcher(7893):启动器没有
启动Intent的权限{act = android.intent.action.VIEW
flg = 0x10000000 cmp = / .ui.Activity2 bnds = [349,76] [469,211]}。使
一定要为相应的活动创建一个MAIN intent-filter
或使用此活动的导出属性。
答案 0 :(得分:5)
如错误消息所示,您可以添加
android:exported="true"
参加您的活动。
虽然如果我正确阅读android文档,这应该是默认值:
android:exports
是否可以启动活动 其他应用程序的组件 - 如果可以,则为“true”,如果为“则为”false“ 不。如果为“false”,则活动只能由组件启动 具有相同用户ID的相同应用程序或应用程序。该 默认值取决于活动是否包含意图过滤器。 没有任何过滤器意味着只能调用活动 通过指定其确切的类名。这意味着活动是 仅供应用程序内部使用(因为其他人不会 知道班级名称)。所以在这种情况下,默认值为“false”。 另一方面,存在至少一个过滤器意味着 该活动旨在供外部使用,因此默认值为 “真”即可。
也许其他人可以澄清这一点。