快捷方式无法启动活动

the*_*r0w 1 android shortcut

  • 我通过代码为活动创建了一些快捷方式,其中大多数无法打开其相关活动。我发现只有将过滤器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>
    
    Run Code Online (Sandbox Code Playgroud)

    (在Go Launcher和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目的过滤器,或为此活动使用导出的属性。

Mat*_*ndy 5

如错误消息所示,您可以添加

android:exported="true"
Run Code Online (Sandbox Code Playgroud)

对你的活动。

虽然如果我正确阅读android文档,则应该将其作为默认值:

android:exported

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

也许其他人可以澄清这一点。