快捷方式无法启动活动

问题描述:

  • 我的代码创建了活动的一些快捷方式,大多无法 打开它的相关活动。我发现它只有在我将 筛选器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> 
    

    (在转到启动测试& MIUI 2.3.7)

  • 我得到了下面的日志,我应该补充主过滤器?

    09-27 13:34:44.075:E /发射器(7893):启动器不具有
    许可启动意图{行为= android.intent.action.VIEW
    FLG = 0x10000000的CMP = /。 ui.Activity2 bnds = [349,76] [469,211]}。请 一定要创建一个主要意图过滤器的相应活动 或使用导出属性为这项活动。

+0

你尝试添加'机器人:出口=“真”'你的活动? (尽管由于意图过滤,它应该默认为真)。 –

+0

我会试试看,以前从未使用过。谢谢。 – thecr0w

+0

@Matt Handy,谢谢。我需要为所有活动添加exported =“true”。不知道是什么引起的。 – thecr0w

由于错误信息提示,您可以添加

android:exported="true" 

到您的活动。

虽然这应该是默认值,如果我读了android文档的权利:

安卓出口

无论活性可以通过其它应用 组件推出 - “如果可以,则为“真”;如果不是,则为“假”。如果为“false”,则活动只能由具有相同用户ID的相同应用程序或应用程序的组件 启动。 默认值取决于活动是否包含意图过滤器。 缺少任何过滤器意味着只能通过指定其确切的类名称才能调用活动 。这意味着活动 仅供应用程序内部使用(因为其他的就 知道类名)。所以在这种情况下,默认值是“false”。 另一方面,至少有一个过滤器的存在意味着 该活动旨在供外部使用,所以默认值为 “true”

也许别人能澄清这一点。

+0

在文档中很清楚 - 如果您添加带有动作MAIN的,则会隐式导出;或者您可以直接将导出设置为true。两者都会使活动导出并由启动器启动。 –