`

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

阅读更多
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;
	}



分享到:
评论
6 楼 luitao 2013-01-25  
这个不行啊,,,,2.3,4.0 都不行啊,,,,我这测试的,,,真的
5 楼 1846396994 2012-04-21  
总结的关于添加和删除及判断是否存在快捷方式,Android应用添加(创建)和删除及判断是否存在桌面快捷方式
4 楼 lipeng88213 2011-11-17  
nos19880918 写道
多谢分享经验。

呵呵 彼此帮助
3 楼 nos19880918 2011-11-15  
多谢分享经验。
2 楼 lipeng88213 2011-09-21  
莫言_MoYan 写道
非常的感谢,救me于水火之中啊!顶!

呵呵 有用就好
1 楼 莫言_MoYan 2011-09-21  
非常的感谢,救me于水火之中啊!顶!

相关推荐

    2011.10.09——— android ImageView放大缩小(2)

    标题中的“2011.10.09——— android ImageView放大缩小(2)”指的是一个关于Android平台中ImageView组件的优化技术,特别是如何处理图片的缩放问题。在Android应用开发中,ImageView是用于显示图像的常见组件,但...

    Android判断是否获取到桌面快捷方式权限

    当涉及到创建桌面快捷方式时,虽然这不是一个典型的受保护的权限,但理解如何在程序中判断是否具备这样的功能仍然是重要的。这个话题主要涵盖的是如何在Android应用中检查用户是否赋予了创建桌面快捷方式的权限,...

    2011.10.12(3)——— android Matrix学习02

    这篇博客“2011.10.12(3)——— android Matrix学习02”可能深入探讨了Matrix类的使用方法,虽然具体的细节没有给出,但我们可以根据Matrix的基本功能和常见用法来展开讨论。 1. **Matrix类的介绍**:Matrix是...

    2011.08.26——— android ListView之多个item布局

    这篇博客"2011.08.26——— android ListView之多个item布局"深入探讨了如何在ListView中实现多个不同类型的Item布局,这对于创建动态、丰富的用户界面至关重要。在Android应用设计中,ListView通常用于显示如联系人...

    2011.10.19——— android 显示一行内容并录制其音频

    这篇博客“2011.10.19——— android 显示一行内容并录制其音频”可能详细探讨了如何实现这个功能。虽然描述部分没有提供具体信息,但我们可以基于标签“源码”和“工具”来推测文章内容,以及从文件名...

    android 检查是否创建桌面快捷方式以及创建快捷方式

    本篇将详细讲解如何检查Android应用是否已创建桌面快捷方式以及如何创建快捷方式。 首先,我们需要理解Android中的快捷方式是如何工作的。在Android系统中,快捷方式是一个指向应用程序特定Activity的Intent对象,...

    NPSWF32调试版本.rar

    ▕ ▕ ▕—————————————————————————————————————— ▕ ▕——[13.27MB] 【NPSWF32调试版本_11.1.102.55_debug】 ▕ ▕ ▕——[856 B] flashplayer.xpt ▕ ▕ ▕——[3.90MB...

    基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj

    基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj

    C语言项目——MP3音乐播放器.zip

    C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——...

    C语言项目——通讯录管理系统.zip

    C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言...

    python项目——学生管理系统.zip

    python项目——学生管理系统.zip python项目——学生管理系统.zip python项目——学生管理系统.zip python项目——学生管理系统.zip python项目——学生管理系统.zip python项目——学生管理系统.zip python项目——...

    教务管理系统-数据库课程设计mysql+java.zip

    教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库...

    java毕业设计——基于Vue+Node的外卖系统设计与实现(答辩PPT+源代码).zip

    java毕业设计——基于Vue+Node的外卖系统设计与实现(答辩PPT+源代码).zip java毕业设计——基于Vue+Node的外卖系统设计与实现(答辩PPT+源代码).zip java毕业设计——基于Vue+Node的外卖系统设计与实现(答辩PPT+源...

    C语言项目——窗体版图书管理系统.zip

    C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版...

    java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip

    java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的旅游网站设计与实现(源码+...

    wl.c万年历——————

    万年历

    java毕业设计-基于springboot的ERP系统源码+数据库.zip

    java毕业设计——基于springboot的ERP系统源码+数据库.zipjava毕业设计——基于springboot的ERP系统源码+数据库.zipjava毕业设计——基于springboot的ERP系统源码+数据库.zipjava毕业设计——基于springboot的ERP...

    Android中文翻译组——Android开发者指南(2).chm

    Android中文翻译组是一个非盈利性质的开源组织,至今已超过300人报名参与,关于翻译组的介绍,请看这里。欢迎更多朋友加入,发邮件到over140@gmail.com申请加入。 Android中文翻译组WIKI网站:...

    AfCore.dll——————

    ArcGIS缺失AfCore.dll文件

    Android中文翻译组——Android中文API——android.widget合集(中)

    在Android应用开发中,`android.widget`包是核心组件之一,包含了众多用于构建用户界面的控件。这个合集特别适合初学者深入理解和掌握Android控件的使用。在这个合集中,我们可以找到各种常见且重要的控件,它们是...

Global site tag (gtag.js) - Google Analytics