Android应用快捷方式通知

时间:2016-07-18 13:22:24

标签: android android-intent broadcastreceiver shortcut intentfilter

我在Launcher中为我的应用添加了这样的快捷方式。

public void create(String name, Bitmap bitmap, int appID) {
    final Intent shortcutIntent = new Intent(context, SplashActivity.class);
    shortcutIntent.setAction(Intent.ACTION_MAIN);

    final Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    intent.putExtra("duplicate", false);
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
    intent.putExtra(Intent.EXTRA_TEXT, appID);

    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    context.sendBroadcast(intent);
}

我想通过此快捷方式打开应用程序时获取一些通知,并从中获取一些参数(快捷方式名称和ID)。尝试使用BroadcastReceiver,但只有在创建快捷方式时才有效。当我用这个快捷方式打开应用程序时,BroadcastReceiver什么也没给我。

    BroadcastReceiver rec = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d(TAG, "intent received");
            if (intent.hasExtra(Intent.EXTRA_TEXT)) {
                Log.d(TAG, "Shortcut ID: " + intent.getIntExtra(Intent.EXTRA_TEXT, 0));
                Log.d(TAG, "Shortcut name: " + intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
            }
        }

    };

    IntentFilter filter = new IntentFilter("com.android.launcher.action.INSTALL_SHORTCUT");
    context.registerReceiver(rec, filter);

如何获得有关它的通知?

1 个答案:

答案 0 :(得分:1)

  

我想通过此快捷方式打开应用时收到通知

您的SplashActivity即将开始。如果您正在将该活动用于其他内容,并且您希望区分这两个活动,请不要将您的快捷方式转到SplashActivity,而是将其转到其他位置。

  

当我用这个快捷方式打开应用程序时,BroadcastReceiver什么也没给我。

正确。

首先,不要求主屏幕关注您的INSTALL_SHORTCUT请求。

其次,当用户点击该快捷方式时,不要求主屏幕发送任何类型的广播。所有预期的是主屏幕启动与该快捷方式相关联的活动。