2 baby bonnie Baby_Bonnie 于 2013.02.04 11:27 提问

Android桌面的快捷方式图标不显示

我想在安卓桌面的某一位置通过代码添加了一个快捷方式,我从远程服务器上下载了图标,然后把这个图标设置成桌面的快捷方式图标。

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();
    }

问题是快捷方式添加上了,但是图标却显示不出来。显示的是默认的快捷方式图标。 错在哪里呢?

4个回答

xiaoyaovsxin
xiaoyaovsxin   2013.02.04 12:29
已采纳

你的图标应该这样获取:

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()); 
CSDN_Ask
CSDN_Ask   2013.02.05 14:52

用 EXTRA_SHORTCUT_ICON 代替 EXTRA_SHORTCUT_ICON_RESOURCE, 问题就会被解决。

bjtenao
bjtenao 木有用啊!
接近 5 年之前 回复
waylife
waylife   2014.11.21 20:09

addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, bm2); 改为
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bm2);
使用EXTRA_SHORTCUT_ICON_RESOURCE的话bm2必须为ShortcutIconResource对象。

waylife
waylife 坑爹的系统,多写了一条
3 年多之前 回复
waylife
waylife 坑爹的系统,多写了一条
3 年多之前 回复
waylife
waylife 坑爹的系统,多写了一条
3 年多之前 回复
waylife
waylife   2014.11.21 20:10

addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, bm2); 改为
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bm2);
使用EXTRA_SHORTCUT_ICON_RESOURCE的话bm2必须为ShortcutIconResource对象。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
桌面图标与实际Icon图标不一致的解决方法
由于Icon缓存的原因,有时候我们查看的桌面快捷方式的图标与实际图标不一致。解决方法: 查看用户/Administrator(如果你的电脑是其他用户,就选择你自定义的用户名称就可以了)/AppData(这是个隐藏文件夹,需要设置把它显示出来)/Local 看到Iconcache.db这个配置文件,把它删除,然后再刷新桌面或者重启电脑就OK了 如果没有Iconcache.db这
Android修改桌面快捷方式的图片和名称
项目要求在应用运行过程中生成了桌面快捷方式,这个很简单,网上很多资料,但是除了这个还要在应用中修改这些快捷方式的图标和名字,找了很久没有找到方法。     怎么办呢……     正在苦恼的时候突然想到:查询快捷方式的时候使用getContentResolver().query()方法查询的,这不就是ContentProvider提供数据的么,既然如此,那除了query()方法,肯定还有updat
桌面上的快捷方式图标下面文字显示…
1. 右键点击我的电脑——属性——高级——性能——设置——视觉效果,选中“在桌面上为图标标签使用阴影”——应用——确定。 2. 右键点击桌面空白处,点“排列图标”,确保“锁定桌面上的WEB项目”没有被选中 3、如何关闭活动桌面。 右键点击桌面——属性——“桌面”选项卡——单击“自定义桌面”——Web选项卡——去掉“锁定桌面项目”的√,就OK了。   我用的是超级兔子 打开超级兔子-》选择
ubuntu 14.04桌面显示快捷方式
按照网络上许多方法都无法在ubuntu 14.04空白的桌面上显示应用程序快捷方式,图形界面重新安装了也还是没用。最后发现,是“ICON ON DESKTOP”的开关没有打开。 下面是ubuntu 14.04桌面显示快捷方式的方法: 1. 打开“ICON ON DESKTOP”开关 打开terminal,在terminal中启动:gnome-tweak-tool,然后将会弹出一个Tw
MUI实现程序快捷方式上面的提示数字
从安卓转做mui也快一年,其中踩了无数的坑,其中样式最让人头疼。。。。以上属吐槽,进入正文。这次是公司提出需求,想在应用的快捷方式上显示角标,然后去MUi官网看下文档,安卓目前只支持MIUI v5。。。。然后网上各种找资料,找到一个觉得可行的方案:点我链接。只是看了https://github.com/leolin310148/ShortcutBadger的更新日志和源码发现小米的数字角标有点问题...
如何建立一个快速显示桌面的快捷方式?
http://www.lmdouble.com/111730151.html
Android笔记:Android 在桌面生成快捷方式(仿微信)
Android 生成快捷方式
pycharm在window上的快捷键图标
详细的绘画出在window上使用pycharm的快捷方式,在键盘上标记出来,方便大家以后使用过程中随时的去学习。
android桌面快捷方式添加数字角标的踩坑之路
提供2个亲测有效的开源项目地址 1.https://github.com/xuyisheng/ShortcutHelper 2.https://github.com/leolin310148/ShortcutBadger 目前只支持三星 lg 索尼 htc 小米手机 Android桌面角标的适配确实是非常坑爹的需求。原生系统根本就没有这个功能,国内很多厂家效仿ios都自己定义了该功
解决电脑桌面图标显示为空白图片
你是否遇到过电脑中个别程序的图标无缘无故变成空白,但是却能正常打开的情况呢?虽然不影响使用,但是看着也太不爽了吧!我是忍不了啊。        好了,介绍下解决的方法(以本人电脑为例,window7系统): 1.打开“计算机”,点击左上角“组织”,选择“文件夹和搜索选项”,在弹出的对话框中选择“查看”,在高级设置中选择“显 示隐藏的文件、文件夹和驱动器”。