当程序安装/卸载时,会发出PACKAGE_ADDED/PACKAGE_REMOVED广播,按理只要应用程序监听这样的广播,就能在收到相应广播时触发相应处理(例如,添加/删除 桌面快捷方式)。事实验证,这个是完全可以实现的。
但是,如果是由应用程序进行这些广播的监听,同时,又卸载自身,那能否收到相应广播并触发相应处理呢?实验证明行不通。
自身已经被卸载了,无法自救!! 如果还有其他方法盼赐教,无限期待。
HL耐心研究了这个许久,还说一定要把它实现。后生可畏呢。
为客户服务就不要顶着一个技术至上的大帽子,踏踏实实做好每个细节。 :)
判定快捷方式已存在
通过发送广播给Launcher创建桌面快捷方式,Laucher收到该广播创建快捷方式后会有Toast提示
创建成功,如果该快捷方式已经存在,也会有Toast提示
已存在。若每次进入程序时都执行如下代码,就每次都有Toast提示出现,频繁地出现打扰了用户
。
// 这个是快捷方式所实现的功能
Intent intent = new Intent(this, Shutcut.class);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
// 发送广播用以创建shortcut
this.sendBroadcast(shortcut);
}
所以,在决定是否执行以上代码之前就添加是否存在该快捷方式的判定
,如果没有该快捷方式,就发出广播告诉Laucher创建快捷方式(会弹窗一次Toast),如果该快捷方式已经存在,则不需执行该代码去创建,当然也就不会出现Toast了。
Cursor c = cr.query(CONTENT_URI,
new String[] {"title","iconResource" },
"title=?",
new String[] {getResources().getString(R.string.app_name) }, null);//XXX表示应用名称。
if(c!=null && c.getCount()>0){
isInstallShortcut = true ;
}
判定是否存在该快捷方式,需要权限: