我想在安卓桌面的某一位置通過代碼添加了一個快捷方式,我從遠程服務器上下載了圖標,然後把這個圖標設置成桌面的快捷方式圖標。
String url = "http://www.the-brights.net/images/icons/brights_icon_50x50.gif";
InputStream ins = null;
try {
ins = new java.net.URL(url).openStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Bitmap bm = BitmapFactory.decodeStream(new FlushedInputStream(ins));
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
OutputStream outStream = null;
try {
outStream = mContext.openFileOutput("test.png", Context.MODE_PRIVATE);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
}
catch(Exception e)
{
e.printStackTrace();
}
Log.i("info", "Got here");
Bitmap bm2;
try {
bm2 = BitmapFactory.decodeStream(mContext.openFileInput("test.png"));
Log.i("info", bm2.toString());
Intent shortcutIntent = new Intent();
shortcutIntent.setClassName(mContext, mContext.getClass().getName());
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
shortcutIntent.putExtra("someParameter", "HelloWorld 123");
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name 123");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, bm2);
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
mContext.sendBroadcast(addIntent);
}
catch(Exception e) {
e.printStackTrace();
}
問題是快捷方式添加上了,但是圖標卻顯示不出來。顯示的是默認的快捷方式圖標。 錯在哪裡呢?
你的圖標應該這樣獲取:
BitmapDrawable iconBitmapDrawabel = null;
try {
iconBitmapDrawabel = (BitmapDrawable) getPackageManager().getActivityIcon(newIntent);//getApplicationIcon(app.activityInfo.packageName);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmapDrawabel.getBitmap());