以编程方式从我的应用程序中打开其他应用程序快捷方式

时间:2017-09-17 12:22:54

标签: android android-widget shortcut android-shortcut

要获取手机上安装的所有应用的快捷列表,我正在执行此操作并且运行良好。

 PackageManager packageManager=getPackageManager();
                Intent shourcutIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
                List<ResolveInfo> resolveInfos=null;
                resolveInfos=packageManager.queryIntentActivities(shourcutIntent,0);
                List<Intent> intentList=new ArrayList<>();
                int a=0;
                for (ResolveInfo resolveInfo: resolveInfos)
                {
                    Intent intent=new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_DEFAULT);
                    intent.setComponent(new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName,resolveInfo.activityInfo.name));
                    Log.d("list"+" "+a,""+intent);
                    a++;
                    intentList.add(intent);
                }
                startActivityForResult(intentList.get(11),567);     

在onActivityResult中这样做。

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==567)
    {
        if(resultCode== Activity.RESULT_OK)
        {
            Intent intent = (Intent) data.getParcelableExtra("android.intent.extra.shortcut.INTENT");
            if(intent!=null)
            {
                Log.d("getParcelableExtra", "!null");
                String uri = intent.toUri(0);
                try
                {
                    Intent intent1 = Intent.parseUri(uri, 0);
                    intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent1);

                }
                catch (URISyntaxException e)
                {
                    e.printStackTrace();
                }
            }

        }
    }
    }

但问题出在onActivityResult data.getParcelableExtra("android.intent.extra.shortcut.INTENT") 返回null。 有时它不会返回null,例如当我启动gmail快捷方式时,但同时对于“设置”快捷方式,它将返回null 但我希望当用户选择从联系人快捷方式拨打的号码或任何其他快捷方式时,我想直接为该联系人启动呼叫屏幕 请帮忙。
提前谢谢。

0 个答案:

没有答案