我有一個activity
,可以檢索所有應用程序,就像啓動AllAppsList
(或者我應該叫他們的活動準確地說,因爲一個應用程序可以有多個activities
,如谷歌地圖) 。而這個activity
可以廣播一個Intent
爲這些應用程序創建快捷方式。而我的問題是關於創建的快捷方式。這裏是我的代碼中創建快捷方式:在Android傑利貝恩創建其他應用程序,但錯誤的大小圖標快捷方式
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) ;
}
這可以成功地創建主屏幕上的快捷方式,但這些圖標大小几乎是不正確的。它們可能太小或太大。 Like this image..上排是我創建的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)) ;
}
which is from here,但是這也不能正常工作。
希望有人能夠給我一個手:)
@Avadhani感謝您改善格式:) –