Android应用程序快捷方式不起作用

IPS*_*IPS 5 xml android

我更新了Android Studio以支持API 25并在项目中实现它.我也寻找不同的资源来找到我的问题的正确答案,但没有运气.首先,我需要说我在Android 6.0.1上使用Action和Nova Launcher测试应用程序(但谷歌应用程序正在运行).所以,我实施了AndroidManifest.xml:

            <meta-data
            android:name="android.app.shortcuts"
            android:resource="@xml/shortcuts" />
Run Code Online (Sandbox Code Playgroud)

创建shortcuts.xmlxml- res.在那里,我输入:

<shortcut
    android:shortcutId="sc1"
    android:enabled="true"
    android:icon="@drawable/ic_kalendar"
    android:shortcutShortLabel="@string/shortcut_kalendar"
    android:shortcutLongLabel="@string/shortcut_kalendar_long"
    android:shortcutDisabledMessage="@string/message_off">
    <intent
        android:action="android.intent.action.MAIN"
        android:targetClass="com.ips.orto.MainActivity"
        android:targetPackage="com.ips.orto" />
    <intent
        android:action="android.intent.action.VIEW"
        android:targetPackage="com.ips.orto"
        android:targetClass="com.ips.orto.kalendar.Kalendar"/>
</shortcut>

<shortcut
    android:shortcutId="sc2"
    android:enabled="true"
    android:icon="@drawable/ic_else"
    android:shortcutShortLabel="@string/shortcut_else"
    android:shortcutLongLabel="@string/shortcut_else_long"
    android:shortcutDisabledMessage="@string/message_off">
    <intent
        android:action="android.intent.action.MAIN"
        android:targetClass="com.ips.orto.MainActivity"
        android:targetPackage="com.ips.orto" />
    <intent
        android:action="android.intent.action.VIEW"
        android:targetPackage="com.ips.orto"
        android:targetClass="com.ips.orto.else.Something"/>
</shortcut>
Run Code Online (Sandbox Code Playgroud)

我尝试删除android:属性,仍然无法正常工作.此外,我添加android:exported="true"Activity指向的内容Shortcuts,我没有shortcuts.xml在任何特殊的v-bucket中创建.有谁知道我做错了什么?

IPS*_*IPS 5

所以,我终于找到了答案。捕获非常简单。代码:

<activity ...>
<meta-data 
    android:name="android.app.shortcuts"     
    android:resource="@xml/shortcuts"/></activity>
Run Code Online (Sandbox Code Playgroud)

meta意味着不仅要添加到 的application一部分Mainfest,还要添加Activity您在其中创建定义的位置shortcuts.xml(例如,如果您定义了 的快捷方式ThirdActivity,则将上面的代码添加到ActivityManifest)。另外,刚刚选择的活动需要这一行:

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

之后,它在 Action 和 Nova Launcher 以及 Android 7.1 模拟器中都能正常工作。

  • 尽管这个解决方案适用于您的情况。重要的是要考虑到“&lt;meta-data ... /&gt;”必须位于“intent-filters”设置为“android.intent.action.MAIN”操作和“android.intent”的活动内部。 [文档](https://developer.android.com/guide/topics/ui/shortcuts)中所述的category.LAUNCHER`类别 (3认同)