繁体   English   中英

快捷方式无法在Android主屏幕上打开应用

[英]shortcut not opening app on android homescreen

我已经在Android设备上安装了一些应用程序,并且我开发了一个代码来为其创建快捷方式,它们都可以与一个应用程序分开工作,但是如果我在主屏幕上手动拖动该应用程序,它将非常有效。下一个代码是我用来创建快捷方式的代码

try
        {
        //Log.i("shortcut method in androidhelper start","in the shortcutapp on create method ");
        boolean flag =false ;
        int app_id=-1;
        PackageManager p = getPackageManager();
        Intent i = new Intent(Intent.ACTION_MAIN);
        i.addCategory(Intent.CATEGORY_LAUNCHER); 
        List<ResolveInfo> res =p.queryIntentActivities( i,0);
        //System.out.println("the res size is: "+res.size());

        for(int k=0;k<res.size();k++)
        {
        //Log.i("","the application name is: "+res.get(k).activityInfo.loadLabel(p));
        if(res.get(k).activityInfo.loadLabel(p).toString().equals("Kortext")){
        flag = true;
        app_id = k;
        break;
        }
        }

        if(flag)
        {
        ActivityInfo ai = res.get(app_id).activityInfo;
        Intent shortcutIntent = new Intent();
        shortcutIntent.setClassName(ai.packageName, ai.name);
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        shortcutIntent.addCategory(Intent.ACTION_PICK_ACTIVITY);
        Intent intent = new Intent();
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        // Sets the custom shortcut's title
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Kortext");

        BitmapDrawable bd=(BitmapDrawable)(res.get(app_id).activityInfo.loadIcon(p).getCurrent());
        Bitmap newbit;
        newbit=bd.getBitmap();
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, newbit);

        intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        sendBroadcast(intent);

        }
        else
        {
    //  throw new UserException(UserException.KErrGeneral,"Application not found");
        }

        }

        catch(ActivityNotFoundException e)
        {
        e.printStackTrace();
        //throw new UserException(UserException.KErrGsmRRNoActivityOnRadioPath,e.getMessage()); 
        }


        catch(Exception e)
        {
        e.printStackTrace();
        //throw new UserException(UserException.KErrGeneral,e.getMessage());

        }

有任何想法吗?

我弄清楚了,我还必须将意图更改为新的Intent(Intent.ACTION_MAIN);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM