在Android中使用动态快捷方式打开片段

4

你好,我正在开发一个应用程序,有两种类型的用户:管理员和普通用户;管理员显然比普通用户拥有更多的操作,因此我需要使用动态快捷方式,根据用户创建快捷方式。

目前,所有的代码已经编写完毕并且可以正常工作。然而,在分配Intent时,即使是分配到MainActivity,我也会收到错误提示。

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.motusk.Monit", "com.motusk.Monit.activity.MainActivity"));

shortcut.add(new ShortcutInfo.Builder(this, "ub")
   .setShortLabel("Location")
   .setLongLabel("Location")
   .setIcon(Icon.createWithResource(this, R.drawable.bg))
   .setIntent(intent)
   .build());

我也尝试过以下方法:
Intent intent = new Intent(this, MainActivity.class);

但是,我在两个地方都遇到了以下错误:

java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.motusk.Monit/com.motusk.Monit.activity.MainActivity}:java.lang.NullPointerException:意图的操作必须设置

我需要帮助的是:

1)如何创建正确的 IntentMainActivity

2)如何知道按下了哪个快捷方式?(依靠按下的快捷方式打开特定的 Fragment 的过程将在 MainActivity 中执行,这就是为什么我需要知道按下了哪个快捷方式。)

1个回答

9
根据错误信息,您的Intent必须使用setAction设置一个动作:
intent.setAction("LOCATION_SHORTCUT");

您可以在Activity中检查该操作:
String action = getIntent() != null ? getIntent().getAction() : null;
if ("LOCATION_SHORTCUT".equals(action)) {
  // Show the correct fragment
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接