Xamarin设置快捷方式的自定义图标

时间:2020-08-14 14:43:07

标签: android xamarin

我使用此代码,但这不起作用。没有例外,但是自定义图标不起作用。我不想使用“ 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(); }
        }

1 个答案:

答案 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(); 
                }
    
            }
相关问题