我有一个activity
可以检索所有像 Launcher 一样的应用程序AllAppsList
(或者我应该准确地称它们为活动,因为一个应用程序可以有多个activities
,比如谷歌地图)。这activity
可以广播Intent
为任何这些应用程序创建快捷方式。我的问题是关于创建的快捷方式。这是我的代码创建快捷方式:
public static void addShortcut(Context c, ActivityInfo actInfo){
PackageManager pm = c.getPackageManager() ;
String packageName = actInfo.packageName ;
String className = actInfo.name ;
CharSequence label = actInfo.loadLabel(pm) ;
// Create an Intent to launch the application
Intent shortcutIntent = new Intent (Intent.ACTION_MAIN) ;
shortcutIntent.setComponent(new ComponentName(packageName, className)) ;
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP) ;
// Create an Intent to notify Launcher to create a shortcut on home screen
Intent addIntent = new Intent() ;
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent) ;
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, label) ;
// Put in the shortcut's icon
Log.i(TAG, "use actInfo.loadIcon(pm)") ;
Drawable drawable = actInfo.loadIcon(pm) ;
Bitmap b = ((BitmapDrawable)drawable).getBitmap() ;
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, b) ;
// Broadcast the Intent
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
c.sendBroadcast(addIntent) ;
}
这可以成功地在主屏幕上创建快捷方式,但这些图标的大小几乎不正确。它们可能太小或太大。像这张图片..上面一行是我创建的 2 个快捷方式。下面的2个快捷键是从Launcher拖出来的AllAppsView
,都是正常的。貌似我的比较小。。。
我尝试的第一件事是调整图标的大小。但如果我这样做,创建的图标就不会像我从 Launcher 的 AllAppsView 中拖动的那样完美。换句话说,它们变得模糊。
另一个尝试是这段代码:
if (actInfo.icon != 0){
Log.i(TAG, "use actInfo.icon") ;
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(c, actInfo.icon)) ;
}
else if (actInfo.applicationInfo.icon != 0){
Log.i(TAG, "use actInfo.applicationInfo.icon") ;
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(c, actInfo.applicationInfo.icon)) ;
}
这是从这里开始的,但这也不起作用。
希望有人能帮帮我:)