我使用此代码,但这不起作用。没有例外,但是自定义图标不起作用。我不想使用“ Resource.Drawable.example_icon_bla_bla”,我想从byte []或从File ...中设置图标。我的Android版本是6.0.1,API级别是23
private void AddShortcut(string appName, string url, byte[] icon_byte)
{
try
{
var uri = Android.Net.Uri.Parse(url);
var intent_ = new Intent(Intent.ActionView, uri);
if (icon_byte.Length > 0)
{
var intent = new Intent();
intent.PutExtra(Intent.ExtraShortcutIntent, intent_);
intent.PutExtra(Intent.ExtraShortcutName, appName);
intent.PutExtra(Intent.ExtraShortcutIcon,Icon.CreateWithBitmap(BitmapFactory.DecodeFile(
Android.OS.Environment.ExternalStorageDirectory + "/Duck.png"))); //this custom Icon line doesn't work.
//intent.PutExtra("duplicate", false);
intent.SetAction("com.android.launcher.action.INSTALL_SHORTCUT");
SendBroadcast(intent);
Toast.MakeText(this, "Added", ToastLength.Long).Show();
}
}
catch (Exception ex) { Toast.MakeText(this, ex.Message, ToastLength.Long).Show(); }
}
答案 0 :(得分:0)
我已经修正了这句话;
private void AddShortcut(string appName, string url, byte[] icon_byte)
{
try
{
Bitmap bitmap = BitmapFactory.DecodeByteArray(icon_byte,0,icon_byte.Length);
// 72x72 best size for launcher icon.
var uri = Android.Net.Uri.Parse(url);
var intent_ = new Intent(Intent.ActionView, uri);
Intent installer = new Intent();
installer.PutExtra("android.intent.extra.shortcut.INTENT", intent_);
installer.PutExtra("android.intent.extra.shortcut.NAME", appName);
installer.PutExtra("android.intent.extra.shortcut.ICON", bitmap);
installer.SetAction("com.android.launcher.action.INSTALL_SHORTCUT");
SendBroadcast(installer);
}
catch (Exception) {
//Toast.MakeText(this,"Shortcut: " +ex.Message, ToastLength.Long).Show();
}
}