Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 676|回复: 0

Android桌面快捷方式图标生成与删除,使用Intent与launcher交互

[复制链接]

该用户从未签到

发表于 2011-10-24 14:35:36 | 显示全部楼层 |阅读模式
 通过分析Launcher的生成快捷方式的过程,找出了使用Intent发送请求,Launcher通过自己注册的InstallShortCutReceiver和UnInstallShortCutReceiver实现了快捷方式图标的生成与移除过程。本文主要分析外部apk如何使用Intent请求生成快捷方式和移除快捷方式图标的问题。


生成快捷方式代码:
private static final String ACTION_INSTALL_SHORTCUT =
"com.android.launcher.action.INSTALL_SHORTCUT";

/**
* 是否可以有多个快捷方式的副本
*/
static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate";
Intent shortcutIntent = new Intent(ACTION_INSTALL_SHORTCUT);  
        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,  
                getString(R.string.app_name));  
        shortcutIntent.putExtra(EXTRA_SHORTCUT_DUPLICATE, false);  
        Intent intent2 = new Intent(Intent.ACTION_MAIN);  
        intent2.addCategory(Intent.CATEGORY_LAUNCHER);
        intent2.setComponent(new ComponentName(this.getPackageName(),  
                ".Main"));  
         
        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);  
        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,  
                Intent.ShortcutIconResource.fromContext(this,  
                        R.drawable.icon));  
        sendBroadcast(shortcutIntent);


注:Intent intent2 = new Intent(Intent.ACTION_MAIN);  这个也可以换成的构造参数也可以是Intent.ACTION_CREATE_SHORTCUT,也可以生成快捷方式图标,但是这样不标准,在删除的时候如果不和这个对于相同则无法删除。所以还是用Intent.ACTION_MAIN。


那么删除快捷方式的代码是:
private static final String ACTION_UNINSTALL_SHORTCUT =
"com.android.launcher.action.UNINSTALL_SHORTCUT";
Intent intent = new Intent(ACTION_UNINSTALL_SHORTCUT );
  intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);
  ComponentName comp = new ComponentName(info.activityInfo.packageName,
    info.activityInfo.name);
  intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent()
  .setComponent(comp).setAction("android.intent.action.MAIN"));
  sendBroadcast(intent);
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:35:39 | 显示全部楼层

Re:Android桌面快捷方式图标生成与删除,使用Intent与launcher

辛苦了,又一个沙发
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:35:43 | 显示全部楼层

Re:Android桌面快捷方式图标生成与删除,使用Intent与launcher

辛苦了,又一个沙发
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 11:57 , Processed in 0.318520 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表