2013-06-27 2 views
0

Я использую код ниже, чтобы создать ярлык для моего собственного приложения, и мне интересно, могу ли я создать ярлык для стороннего приложения? Если это возможно, где я могу получить значок (Parcelable)?создать ярлык для приложения thrid-party, возможно ли это?

Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
    shortcut.putExtra("duplicate", false); 
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, name); 
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); 
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent().setComponent(new ComponentName(className, activity))); 
    context.sendBroadcast(shortcut); 

ответ

2
public static void createShortcutForPackage(Context context, String packageName, String className) { 
    Intent intent = new Intent(); 
    intent.setComponent(new ComponentName(packageName, className)); 

    PackageManager pm = context.getPackageManager(); 
    ResolveInfo ri = pm.resolveActivity(intent, 0); 

    String shortcutName = ri.loadLabel(pm).toString(); 
    String activityName = ri.activityInfo.name; 
    int iconId = ri.activityInfo.applicationInfo.icon; 

    Context pkgContext = PackageUtil.createPackageContext(context, packageName); 
    if (pkgContext != null) { 
     ShortcutIconResource sir = Intent.ShortcutIconResource.fromContext(pkgContext, iconId); 
     installShortcut(pkgContext, packageName, activityName, shortcutName, sir); 
    } 
} 

public static void installShortcut(Context context, String packageName, String componentName, String shortcutName, Parcelable icon) { 
    Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
    ComponentName cn = new ComponentName(packageName, componentName); 
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(cn)); 
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName); 
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); 
    shortcut.putExtra("duplicate", false); 
    context.sendBroadcast(shortcut); 
} 

public static Context createPackageContext(Context context, String pkgName) { 
    Context result = null; 
    try { 
     result = context.createPackageContext(pkgName, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); 
    } catch (NameNotFoundException e) { 
     Log.d(TAG, "createPackageContext(): " + e.getStackTrace()); 
    } 
    return result; 
} 
+0

Привет, пожалуйста, помогите мне с моим вопросом. http://stackoverflow.com/questions/21371491/create-app-shortcut-inside-the-custom-launcher-in-android – androidBoomer

+0

@androidBoomer Я не знаком с боковым кодом запуска, но я хотел бы показать свои мнения после того, как прочитали ваш вопрос: 1. Возможно, вам следует просто запросить базу данных SHORTCUT, например «LauncherSettings.Favorites.CONTENT_URI» или что-то в этом роде, чтобы получить их имя, значок и т. д.: http://grepcode.com/file/repository.grepcode. com/java/ext/com.google.android/android-apps/5.L_preview/com/android/launcher2/LauncherModel.java # LauncherModel.LoaderTask.loadWorkspace% 28% 29 2. почему бы не взглянуть на открытое настроение Android launcher2: https://android.googlesource.com/platform/packages/apps/Launcher2/+/master/ – thecr0w