Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamic Shortcuts to open Fragments in Android

Hi I'm developing an application that has 2 types of user: Admin and normal user; The admin obviously has more actions than the normal user, so I need to use dynamic Shortcuts, depending on the user the Shortcuts are created.

At this point everything is already codified and working. However, at the time of assigning an Intent, even to the MainActivity I receive an error.

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());

I also tried with:

Intent intent = new Intent(this, MainActivity.class);

But, in both I get the error:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.motusk.Monit/com.motusk.Monit.activity.MainActivity}: java.lang.NullPointerException: intent's action must be set

In what I need help with is:

1) How to create a correct Intent to the MainActivity?

2) How to know which shortcut was pressed? (The process of depending on which shortcut was pressed to open a certain Fragment will be performed in the MainActivity, that's why I need to know which Shortcut was pressed).

like image 476
Edgar Pisxid Avatar asked Jan 04 '23 08:01

Edgar Pisxid


1 Answers

As per the error message, your Intent must set an action with setAction:

intent.setAction("LOCATION_SHORTCUT");

You can then check the action in your Activity:

String action = getIntent() != null ? getIntent().getAction() : null;
if ("LOCATION_SHORTCUT".equals(action)) {
  // Show the correct fragment
}
like image 95
ianhanniballake Avatar answered Jan 16 '23 17:01

ianhanniballake