适用于多味道应用的Android App动态快捷方式

时间:2017-09-12 08:50:21

标签: android shortcuts android-7.1-nougat android-8.0-oreo

您能否帮助在Android中为动态快捷方式配置应用程序包

应用程序代码通过 build.gradle 使用产品调味 品牌

productFlavors {
    branda {
        applicationId "com.bb.branda"
        ...
    }
    brandb {
        applicationId "com.bb.brandb"
        ...
    }
    ...
    ...

}

对于静态快捷方式,可以在 shortcuts.xml 文件中的标记" targetPackage"下配置它们。

例如。的机器人:targetPackage =" com.bb.branda"

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android" >
<shortcut
    android:shortcutId="contact_us"
    android:enabled="true"
    android:icon="@drawable/home_contactus_icon"
    android:shortcutShortLabel="@string/label.contactus"
    android:shortcutLongLabel="@string/label.contactus"
    >
    <intent
        android:action="contactus"
        android:targetPackage="com.bb.brand"
        android:targetClass="com.bb.launcher.LauncherActivity"
        />
    <categories android:name="android.shortcut.conversation" />
</shortcut>

对于动态快捷方式,可以在下面的代码段中完成相同的工作吗?

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {

        ShortcutManager shortcutManager = ctx.getSystemService(ShortcutManager.class);

        ShortcutInfo shortcut = new ShortcutInfo.Builder(ctx, shortcutId)
                .setShortLabel(sTitle)
                .setLongLabel(sTitle)
                .setIcon(Icon.createWithResource(ctx, resID))
                .setIntent(new Intent(sIntentAction))
                .build();

        shortcutManager.addDynamicShortcuts(Arrays.asList(shortcut));
    }

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您想要实现的是指定intent的包,您可以通过以下方式创建intent:

    Intent intent = new Intent(sIntentAction);
    intent.setComponent(new ComponentName("your.package.id", YourActivity.class.getName()));
    ShortcutInfo shortcut = new ShortcutInfo.Builder(ctx, shortcutId)
            .setShortLabel(sTitle)
            .setLongLabel(sTitle)
            .setIcon(Icon.createWithResource(ctx, resID))
            .setIntent(intent)
            .build();