Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android O中锁定快捷方式时接收回调/广播_Java_Android_Android Broadcast_Android Shortcut_Android Shortcutmanager - Fatal编程技术网

Java 在android O中锁定快捷方式时接收回调/广播

Java 在android O中锁定快捷方式时接收回调/广播,java,android,android-broadcast,android-shortcut,android-shortcutmanager,Java,Android,Android Broadcast,Android Shortcut,Android Shortcutmanager,我试图同时添加两个快捷方式。但是安卓8显示一个对话框并请求用户允许添加快捷方式,其中两个对话框不能同时显示 因此,我需要一种方法,当第一个对话框关闭时,我可以通过它获得回调或广播,以便我可以在之后添加另一个快捷方式。目前,当用户允许请求时,我能够获得广播。但是我想知道用户是否取消了该对话框。 我正在使用以下代码: @RequiresApi(api = Build.VERSION_CODES.O) private static void addShortcutNew(Context context

我试图同时添加两个快捷方式。但是安卓8显示一个对话框并请求用户允许添加快捷方式,其中两个对话框不能同时显示

因此,我需要一种方法,当第一个对话框关闭时,我可以通过它获得回调或广播,以便我可以在之后添加另一个快捷方式。目前,当用户允许请求时,我能够获得广播。但是我想知道用户是否取消了该对话框。

我正在使用以下代码:

@RequiresApi(api = Build.VERSION_CODES.O)
private static void addShortcutNew(Context context, Intent shortcutIntent, String label, int iconRes, int color) {
    ShortcutManager manager = context.getSystemService(ShortcutManager.class);
    if (manager != null && manager.isRequestPinShortcutSupported()) {

        ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(context, label)
                .setIcon(prepareIcon(context, iconRes, color)) // prepareIcon is my own method which returns an Icon.
                .setIntent(shortcutIntent)
                .setShortLabel(label)
                .setLongLabel(label)
                .build();

        context.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Toast.makeText(context, "Broadcast", Toast.LENGTH_SHORT).show();
                context.unregisterReceiver(this);
            }
        }, new IntentFilter("test_action"));

        Intent intent = new Intent("test_action");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 123, intent, 0);
        manager.requestPinShortcut(shortcutInfo, pendingIntent.getIntentSender());

    } else {
        Toast.makeText(context, R.string.add_shortcut_error, Toast.LENGTH_SHORT).show();
    }
}

如果有其他人遇到这个问题,我做了一个临时的解决办法,在添加
ShortcutInfo
对象之前,先将它存储在一个字段中,然后在
onResume
方法中检查它是否不为null。不幸的是,文档明确表示不会在出现故障时回调。我所做的是调用一个alertdialog,让用户说是/否。如果不是,我在no按钮中启动下一个alertdialog。如果是,我让android回调完成启动下一个对话框。它让用户日两次“是”,但我想不出其他任何东西。