其他分享
首页 > 其他分享> > 在Android快捷方式中使用变量功能xml?

在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,shortcuts
来源: https://codeday.me/bug/20190623/1266177.html