通过Intent为一个Activity创建多个快捷方式

时间:2016-10-28 13:10:47

标签: android android-intent

我有一个活动,应该根据用户在主屏幕上按下的快捷方式显示不同的内容。

我的代码如下:

的AndroidManifest.xml

    <activity
        android:name=".activities.ShortcutActivity_"
        android:parentActivityName=".activities.MainActivity_"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.CREATE_SHORTCUT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

创建快捷方式的方法:

private void createShortcut(String label){
    Intent shortcut = new Intent(getApplicationContext(), ShortcutActivity_.class);
    shortcut.setAction(Intent.ACTION_MAIN);

    Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcut);
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                    R.mipmap.ic_launcher));
    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    intent.putExtra("duplicate", false);
    getApplicationContext().sendBroadcast(intent);
}

我正在调用这样的方法:

createShortcut(ShortcutActivity_.class, "Shortcut 1");
createShortcut(ShortcutActivity_.class, "Shortcut 2");

在我的活动中,我想检查标签并显示每个快捷方式的不同内容,但它不起作用。只会创建一个快捷方式。

如何根据按下的快捷方式构建可以显示不同内容的动态活动?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

以下代码适用于我的情况。

private void createShortcut(Class c, String label, int id) {
    Intent shortcut = new Intent(getApplicationContext(), c);
    shortcut.putExtra(SHORTCUT_ID, id);
    shortcut.putExtra("duplicate", false);
    shortcut.setAction(Intent.ACTION_DEFAULT);

    Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcut);
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                    R.mipmap.ic_launcher));
    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    intent.putExtra("duplicate", false);
    getApplicationContext().sendBroadcast(intent);
}

在您的活动中调用这样的方法:

createShortcut(ShortcutActivity.class, "Shortcut 2", 2);

在你的ShortcutActivity中获取这样的Intent并回复它。

Intent intent = getIntent();
    if (intent == null)
        return;

    if (intent.getIntExtra(MainActivity.SHORTCUT_ID, 0) == 1){
        textView2.setText("Shortcut 1");
    }
    if (intent.getIntExtra(MainActivity.SHORTCUT_ID, 0) == 2){
        textView2.setText("Shortcut 2");
    }