博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 创建桌面快捷方式研究
阅读量:5085 次
发布时间:2019-06-13

本文共 2402 字,大约阅读时间需要 8 分钟。

创建快捷方式本来是很简单的一件事件,代码网上一搜一大堆,但是你用后细心研究一下就会发现一个问题:

不是回到你返回桌面时正在运行的那个 Activity 而是重新运行了你应用的第一个 Activity ,

这样显然是不可以的,网上苦苦搜寻半天千篇一律都没解决办法,于是研究 Logcat 

首先从 Launcher 点击图标系统发出的 Intent 如下:

I/ActivityManager(564): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.freesky.sdkproxytestbed/.MainActivity} from pid 29805

再看看从自己创建的快捷方式发出的 Intent:

I/ActivityManager(564): START u0 {act=android.intent.action.MAIN flg=0x10200000 cmp=com.freesky.sdkproxytestbed/.MainActivity bnds=[216,203][376,403]} from pid 29805

仔细对比下是不是少了:cat=[android.intent.category.LAUNCHER]

所以你只需要加上这个 Category 就OK了,奉上代码!

1 private String getAppName() { 2         String appName = ""; 3         try { 4             PackageInfo info = this.getPackageManager().getPackageInfo( 5                     this.getPackageName(), 0); 6             appName = getString(info.applicationInfo.labelRes); 7         } catch (NameNotFoundException e) { 8         } 9 10         return appName;11     }12 13     private int getAppIcon() {14         int appIcon = 0;15         try {16             PackageInfo info = this.getPackageManager().getPackageInfo(17                     this.getPackageName(), 0);18             appIcon = info.applicationInfo.icon;19         } catch (NameNotFoundException e) {20         }21         return appIcon;22     }23     24     public void createShortCut(Activity app, String componetName, String appName, int icon) {25         ComponentName comp = new ComponentName(this.getPackageName(), this.getPackageName() + "." + this.getLocalClassName());26         Intent shortcutIntent = new Intent(Intent.ACTION_MAIN).setComponent(comp);27         //加上这句能避免启动新的 Activity28         shortcutIntent.addCategory(Intent.CATEGORY_LAUNCHER);29 30         Intent intent = new Intent();31         32         intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);33         intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);34         35         ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(app, icon);36         intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);37         // 不创建重复快捷方式38         intent.putExtra("duplicate", false);39         // 添加快捷方式40         intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");41         app.sendBroadcast(intent);42     }

 

转载于:https://www.cnblogs.com/yichouangle/archive/2013/06/07/3125310.html

你可能感兴趣的文章
[转载]INFORMIX锁机制及如何剖析其锁申辩(第二部门)
查看>>
Andriod-项目stymqjlb-学习笔记2-原型
查看>>
Web AppDomain
查看>>
JQuery创建规范插件
查看>>
AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
查看>>
Unity中Text渐变色,和Text间距
查看>>
P4932 浏览器
查看>>
Concurrency Kit 0.2.13 发布,并发工具包
查看>>
SQL Relay 0.50 发布,数据库负载均衡器
查看>>
Infinispan 5.3.0.Alpha1 发布
查看>>
设计模式学习笔记——原型模式(Prototype)
查看>>
算法普林斯顿
查看>>
Struts2之类范围拦截器和方法拦截器
查看>>
模型层(练习)
查看>>
XML解析技术研究(一)
查看>>
Qt 学习之路 :使用 QJson 处理 JSON
查看>>
NPOI操作Excel导入导出
查看>>
angularJS 移动端焦点图
查看>>
jvm 这我就能会了 擦
查看>>
实战技能:小小微信支付业务,何必虚惊一场
查看>>