gpt4 book ai didi

Android - 如何接收快捷方式创建结果

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:42 24 4
gpt4 key购买 nike

查看代码示例 here - 我发现以下评论令人费解:

// ... We assume here that the
// app has implemented a method called createShortcutResultIntent() that
// returns a broadcast intent.

这是什么意思应用程序已经实现了......这个实现是在哪里完成的?

它是一个广播接收器吗?注册到哪个 Intent 过滤器?

这是一个抽象方法吗?哪个类的?

然后我看到this code sample - 它处理完全不同的流程(我认为),我又迷路了

最佳答案

您可以通过捕获您在使用requestPinShortcut 函数时设置的广播事件来获得反馈。首先,您需要一个普通的广播接收器(在下面的代码中,它的名称为 ShortcutReceiver)。您甚至可以使用现有的广播接收器并简单地添加它应该捕获的新操作。
让操作成为 "general.intent.action.SHORTCUT_ADDED" 并将其存储在 ShortcutReceiver.kInstalledAction 常量中。在这种情况下,您应该在 list 中:

<receiver android:name=".ShortcutReceiver" >
<intent-filter>
<action android:name="general.intent.action.SHORTCUT_ADDED"/>
</intent-filter>
</receiver>

在此之后,您可以在 Activity 中使用以下代码来创建固定快捷方式(在其他地方更改 Context 类的对象):

ShortcutManager manager = this.getSystemService(ShortcutManager.class);
Intent targetIntent = new Intent(ShortcutReceiver.kInstalledAction);
targetIntent.setPackage(this.getPackageName());
PendingIntent intent = PendingIntent.getBroadcast(this, 0, targetIntent, 0);
manager.requestPinShortcut(info, intent.getIntentSender());

在这段代码中,infoShortcutInfo 类的正确对象。
您可以在捕获广播的同时处理事件:

public class ShortcutReceiver extends BroadcastReceiver {
public static final String kInstalledAction = "general.intent.action.SHORTCUT_ADDED";

@Override
public void onReceive(Context context, Intent intent) {

if (kInstalledAction.equals(intent.getAction())) {
// Handle the event after the shortcut has been added
Toast.makeText(context, "The shortcut has been added", Toast.LENGTH_LONG).show();
}

}

}

请注意,根据我的经验,广播事件发生在添加快捷方式之后,但有时可能会有一些延迟(大约几分钟)。但可能对启动器有一些依赖性。

更新
正如 Android 8 上的其他答案中所述,通过广播捕获隐式 Intent 通常是行不通的。所以我简单地通过设置当前应用程序的包名称将 Intent 更改为显式。所以只有我们的广播接收器才能捕捉到 Intent 。

关于Android - 如何接收快捷方式创建结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50842627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com