我想要做的是将某个键值传递给intent,指示应用程序是通过快捷方式打开的,因此它执行某些任务而不是标准启动。 在我的情况下,应用程序需要在继续之前从服务器下载数据。我希望在安装后可以使用快捷方式,因此我无法像启动后到目前为止那样放置动态快捷方式。 我还尝试通过打开一个特殊的活动来实现这一点,我将密钥放在意图中,但是我需要单独为每个快捷方式执行此操作,因为我不知道如何确定用户点击的快捷方式。 如何将原始数据放入shortcut.xml中的intent?
EDIT_1:这会是类别吗?也许有一种方法可以做到。
EDIT_2当前解决方案:我通过将类别放入xml文件中的快捷方式intent来解决它。我怎么还在寻找一个用于将原始数据放入xml intent的命名空间。
答案 0 :(得分:2)
U应该可以检查android文档并查看如何添加动态ShortCut检查这个,你可以通过这样的方式传递一个intent,使用Bundle也许Dynamic ShortCut App
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1")
.setShortLabel("Web site")
.setLongLabel("Open the web site")
.setIcon(Icon.createWithResource(context, R.drawable.icon_website))
//check out this part
.setIntent(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.mysite.example.com/")))
.build();
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
对于静态Shorcut ,如果你想要检测某些内容,那么shorcut你按下的内容会在ur xml shorcut>下使用它。意图:
<intent
android:action="com.example.whatever.WTF"
..../>
然后在你的活动中声明一个常数。
private static final String ACTION_ADD_WTF ="com.example.whatever.WTF";
然后onCreate()把这个:
if (ACTION_ADD_WTF.equals(getIntent().getAction())) {
// Invoked via the manifest shortcut.
//TODO:put your logic here
}
Android中的P.D WTF 多么糟糕的失败,不要以为不好! :d
答案 1 :(得分:1)
如果要设置意图的数据uri,可以通过在静态xml(https://developer.android.com/guide/topics/ui/shortcuts.html#static)中设置它来实现:
...
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.yourname.yourapp"
android:targetClass="com.yourname.yourapp.activities.ShortcutActivity"
android:data="content://com.yourname.yourapp/compose/new?from=shortcut" />
...
在您的活动中,您将获得数据uri:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Uri data = this.getIntent().getData();
}