2011.09.15 ——— android 桌面添加快捷方式之判断是否存在无效

参考:http://maxuefeng.blog.51cto.com/1876326/528645
http://blog.163.com/ethan_518/blog/static/177959139201161934629363/

前面写了如何创建 删除和判断快捷方式的方法 但是后来发现判断快捷方式的方法不是总是很有效 上网查了下 发现大家的为问题都是2.2版本之后的就判断不正确了

在此 将原来的判断方法贴一下

private boolean hasShortCut() {        ContentResolver resolver = getContentResolver();        Cursor cursor = resolver.query(Uri.parse("content://com.android.launcher.settings/favorites?notify=true"), null, "title=?",                        new String[] {getString(R.string.app_name)}, null);        if (cursor != null && cursor.moveToFirst()) {                cursor.close();                return true;        }        return false;}



后来 我看了一下2.2版本和1.5版本的launcher中的清单文件

1.5的如下:

<!-- Intent received used to install shortcuts from other applications -->        <receiver            android:name=".InstallShortcutReceiver"            android:permission="com.lp.launcher.permission.INSTALL_SHORTCUT">            <intent-filter>                <action android:name="com.lp.launcher.action.INSTALL_SHORTCUT" />            </intent-filter>        </receiver>        <!-- Intent received used to uninstall shortcuts from other applications -->        <receiver            android:name=".UninstallShortcutReceiver"            android:permission="com.lp.launcher.permission.UNINSTALL_SHORTCUT">            <intent-filter>                <action android:name="com.lp.launcher.action.UNINSTALL_SHORTCUT" />            </intent-filter>        </receiver>        <!-- The settings provider contains Home's data, like the workspace favorites -->        <provider            android:name="LauncherProvider"            android:authorities="com.lp.launcher.settings"            android:writePermission="com.lp.launcher.permission.WRITE_SETTINGS"            android:readPermission="com.lp.launcher.permission.READ_SETTINGS" />


2.2的如下:
<!-- Intent received used to install shortcuts from other applications -->        <receiver            android:name="com.android.launcher2.InstallShortcutReceiver"            android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">            <intent-filter>                <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />            </intent-filter>        </receiver>        <!-- Intent received used to uninstall shortcuts from other applications -->        <receiver            android:name="com.android.launcher2.UninstallShortcutReceiver"            android:permission="com.android.launcher.permission.UNINSTALL_SHORTCUT">            <intent-filter>                <action android:name="com.android.launcher.action.UNINSTALL_SHORTCUT" />            </intent-filter>        </receiver>        <!-- The settings provider contains Home's data, like the workspace favorites -->        <provider            android:name="com.android.launcher2.LauncherProvider"            android:authorities="com.android.launcher2.settings"            android:writePermission="com.android.launcher.permission.WRITE_SETTINGS"            android:readPermission="com.android.launcher.permission.READ_SETTINGS" />


可以看出来 创建和删除快捷方式的receiver没什么变化
但是查询的provider有了变化

android:authorities="com.android.launcher.settings"

android:authorities="com.android.launcher2.settings"


所以说我们的方法用在2.2之后的版本是无效的

现修改代码如下:

public static boolean hasShortCut(Context context) {String url = "";System.out.println(getSystemVersion());if(getSystemVersion() < 8){url = "content://com.android.launcher.settings/favorites?notify=true";}else{url = "content://com.android.launcher2.settings/favorites?notify=true";}        ContentResolver resolver = context.getContentResolver();        Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",                        new String[] {context.getString(R.string.app_name)}, null);        if (cursor != null && cursor.moveToFirst()) {                cursor.close();                return true;        }        return false;}private static int getSystemVersion(){return android.os.Build.VERSION.SDK_INT;}



更多相关文章

  1. Android支持java8的设置方法
  2. Android(安卓)程序执行Linux命令的解决方法及注意事项
  3. Netty实战(三)Unity程序采用netty和其他netty程序通信
  4. Android(安卓)HttpClient网络编程
  5. android1.6新增SD卡写权限WRITE_EXTERNAL_STORAGE
  6. Android(安卓)Studio中获取MD5、SHA1、SHA256的方法
  7. 下载各个版本SDK Tools及ADT的技巧
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. 使用 Xtrabackup 在线对MySQL做主从复制
  2. 阿里云服务器忘记mysql的登录密码时候如
  3. 如何从MySQL DBs的不同表中提取create语
  4. 装机建项目vs2017和mysql5.7下建项目用EF
  5. 是一个mysql临时表,每个用户访问创建它的
  6. MySQL 一对多查询
  7. 中文乱码问题
  8. 可以在SELECT语句中嵌入描述语法吗?
  9. MySQL判断索引存在并删除索引的存储过程
  10. Linux上跑MySQL优化技巧