【问题标题】:Android app shortcut notificationAndroid 应用快捷方式通知
【发布时间】:2016-07-18 13:22:24
【问题描述】:

我像这样在 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);

如何获得通知?

【问题讨论】:

    标签: android android-intent broadcastreceiver shortcut intentfilter


    【解决方案1】:

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

    您的SplashActivity 将启动。如果您将该活动用于其他用途,并且想要区分两者,请不要让您的快捷方式转到SplashActivity,而是让它转到其他用途。

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

    正确。

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

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

    【讨论】:

    • 实际上,我想使用几个快捷方式来启动相同的活动(别担心,它是供内部使用的,不是供 google play 使用的)。 SplashActivity 将根据 Shortcut id 决定下一步该做什么。有可能吗?
    • @AndreyRankov:您可以尝试在shortcutIntent 上添加额外内容。我不会指望在SplashActivity 中获得这些,但在某些情况下它可能会起作用。
    • 不,它对我不起作用。我更改了过滤器,但 BroadcastReceiver 无法检测到shortcutIntent
    • @AndreyRankov:不会有广播shortcutIntent 不与 sendBroadcast() 一起使用。它与startActivity() 一起使用。在您的情况下,它将以 SplashActivity 开头。 如果您在shortcutIntent上添加了额外内容可能会发送到SplashActivity,在那里可以通过getIntent()获取.我不会指望这个,但它可能适用于某些主屏幕。
    • 太棒了,它有效!请将此作为答案发布,我会接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多