如何在Android中的自定义启动器中创建应用程序快捷方式?

我目前正在开发一个应用程序,可以创建设备的所有已安装应用程序的快捷方式.为了创建快捷方式,用户需要以管理员身份登录,并且从该活动中,有一个包含所有已安装应用程序的ListView.用户需要选择app / s以便创建快捷方式.

private boolean Generate_Shortcut(Context context, String appName, boolean isTrue) {
    boolean flag =false ;
    int app_id=-1;
    PackageManager pm = context.getPackageManager();
    Intent i = new Intent(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> res = pm.queryIntentActivities( i,0);


for(int k=0; k<res.size(); k++) {
    if(res.get(k).activityInfo.loadLabel(pm).toString().equals(appName)){
        flag = true;
        app_id = k;

        break;
    }
}

if(flag) {
    ActivityInfo ai = res.get(app_id).activityInfo;

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    shortcutIntent.setClassName(ai.packageName, ai.name);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);
    intent.putExtra("duplicate", false);

    if(isTrue) {    
        // CREATE SHORTCUT  
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.ic_launcher));
        intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");       
    } else {
        // REMOVE SHORTCUT
        intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
    }

    context.sendBroadcast(intent);

} else
    System.out.println("applicaton not found");
return true;
}

选择应用程序后,它将在Main Activity中创建一个具有GridView的快捷方式.这里的问题是创建的快捷方式是在主屏幕中创建的.现在我的问题是,如何在主屏幕中创建我的应用程序(MainActivity.java)中的快捷方式?

最佳答案
你试过了吗?

<activity android:name=".YourActivity" android:label="@string/app_name">
  <intent-filter>
    <action android:name="android.intent.action.CREATE_SHORTCUT" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

然后在接收意图的活动中,为快捷方式创建意图并将其作为活动结果返回.

// create shortcut if requested
ShortcutIconResource icon =
    Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);

Intent intent = new Intent();

Intent launchIntent = new Intent(this,ActivityToLaunch.class);

intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launchIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, someNickname());
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);

setResult(RESULT_OK, intent);

转载注明原文:如何在Android中的自定义启动器中创建应用程序快捷方式? - 代码日志