我有一个活动,应该根据用户在主屏幕上按下的快捷方式显示不同的内容。
我的代码如下:
的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");
在我的活动中,我想检查标签并显示每个快捷方式的不同内容,但它不起作用。只会创建一个快捷方式。
如何根据按下的快捷方式构建可以显示不同内容的动态活动?
感谢您的帮助!
答案 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");
}