从Android应用程序获取快捷方式意图信息

时间:2013-12-10 17:03:41

标签: android android-intent shortcut

当用户点击按钮时,他会获得支持此代码的快捷方式的应用列表。

Intent j;
j = new Intent(Intent.ACTION_PICK_ACTIVITY);
j.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT));
j.putExtra(Intent.EXTRA_TITLE, "Create a Shortcut");
startActivityForResult(j, choose_app_for_shortcut);

在他选择应用程序后,我向用户显示此应用程序在onActivityResul()方法中使用此代码支持的快捷方式列表

onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == Activity.RESULT_OK && data != null) {
        switch(requestCode){
        case: choose_app_for_shortcut
            Intent i = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
            startActivityForResult(data, pick_shortcut_from_app);
            break;
        case pick_shortcut_from_app:
             ?
             ?
    }
}

问题是:我需要什么代码:(case: pick_shortcut_from_app)来获取运行此快捷方式所需的信息?最终目标是将此信息存储在文件中,以便应用程序记住该选项,并且可以在应用程序关闭后启动快捷方式。我尝试了一些东西,但它导致应用程序崩溃,所以你的帮助将不胜感激!

我更进一步使用此代码

    String uri = data.toURI().toString();
    try {
        startActivity(Intent.getIntent(uri));
        } catch (URISyntaxException e) {
          e.printStackTrace();
        }

但是我得到了一个奇怪的消息,问我想用什么应用来完成这个动作。快捷方式来自的应用程序不在列表中!

1 个答案:

答案 0 :(得分:0)

看起来像这样:

 startActivity(Intent.getIntent(uri));

您实际上正在使用没有正确操作集的意图。试试这个:

 Intent intent = Intent.getIntent(uri);
 intent.setAction(Intent.ACTION_PICK_ACTIVITY);
 startActivity(intent);