在Android快捷方式中使用变量功能xml?

我正在使用Androidshortcut功能,我有以下xml:

<shortcuts
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:shortcutId="some_id"
        android:enabled="true"
        android:icon="@drawable/ic_icon"
        android:shortcutShortLabel="@string/short_label"
        android:shortcutLongLabel="@string/long_label"
        tools:targetApi="n_mr1">
        <intent
            android:action="android.intent.action.MAIN"
            android:targetPackage="my.package"
            android:targetClass="my.package.MainActivity" />
    </shortcut>
</shortcuts>

有这样的,它没有问题.

我可以在快捷方式xml文件中使用变量,例如在AndroidManifest.xml中我可以这样做:

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>

所以我想对快捷方式有相同的行为,但不知何故它不起作用:

<intent
    android:action="android.intent.action.MAIN"
    android:targetPackage="${applicationId}"
    android:targetClass="my.package.MainActivity" />

你知道如何在这里使用变量吗?

我想这样做的原因是我们有多个具有不同包名的环境:my.package.test,my.package.debug,my.package.hotfix等…

解决方法:

我创建了一个插件,可以在资源中使用manifestPlaceholders,并且可以与android gradle插件的3.0.0版一起使用

https://github.com/timfreiheit/ResourcePlaceholdersPlugin

的src / main / RES / shortcuts.xml:

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut ...>

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.test.MainActivity"
            android:targetPackage="${applicationId}"/>
    </shortcut>
</shortcuts>
上一篇:android – 从ics中的stock启动器中删除指向我的应用程序的快捷方式


下一篇:在PHP中一次调用中附加/连接多个字符串?