`

android判断和创建快捷方式(4.03测试通过)

 
阅读更多

文章来源:http://www.itnose.net/detail/6040401.html

更多文章:http://www.itnose.net/type/85.html

android判断和创建快捷方式(4.03测试通过)

 

整理了网上的创建方式的代码,对于快捷方式的判断使用系统api获取当前启动器来处理,这样系统定制过或者启动器不一样也没关系 。

 

 

一加权限和声明目标activity

 

    <!-- 创建快捷方式 -->
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

 

 

  <activity
            android:name="com.shortcut.TestActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent" >
            <intent-filter>
                <action android:name="action.com.shortcut.test" />
            </intent-filter>
        </activity>

二创建代码

 

 

 

	/**
	 * 创建快捷方式
	 * 
	 * @param context
	 * @param name 显示名称
	 * @param url 
	 */
	public static void createShortCut(Context context, String name, String url) {

		if (hasShortCut(context, name)) {

		        Log.v("createShortCut", name + "快捷方式已存在");
			return;
		}
		final Intent shortcutIntent = new Intent(
				"com.android.launcher.action.INSTALL_SHORTCUT");

		shortcutIntent.putExtra("duplicate", false);
		final Parcelable icon = Intent.ShortcutIconResource.fromContext(
				context,
				ResourceUtil.getId(context, "drawable", "o2o_game_float_icon"));

		// 这个参数是启动的activity的action
		final Intent targetIntent = new Intent(
				"action.com.shortcut.test");

		// 目标activity
		targetIntent.setClassName(context.getPackageName(),
				"com.shortcut.TestActivity");
		targetIntent.putExtra("url", url);
		targetIntent.putExtra("name", name);
		targetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

		shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);
		shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
		shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);

		context.sendBroadcast(shortcutIntent);
	}

	/**
	 * 判断快捷方式是否已存在
	 * 
	 * @param context
	 * @param name
	 * @return
	 */
	private static boolean hasShortCut(Context context, String name) {

		Log.v("LauncherPackageName",
				getLauncherPackageName(context));

		String launcherPackage = getLauncherPackageName(context);

		if (TextUtils.isEmpty(launcherPackage)) {
			// 查询不到启动器时默认已存在快捷方式,不进行创建
			return true;
		}
		// Log.v("LauncherPackageName", launcherPackage);
		boolean result = false;
		final String uriStr = "content://" + launcherPackage
				+ ".settings/favorites?notify=true";

		final Uri CONTENT_URI = Uri.parse(uriStr);
		final Cursor c = context.getContentResolver().query(CONTENT_URI, null,
				"title=?", new String[] { name }, null);

		if (c != null && c.getCount() > 0) {
			result = true;
		}
		return result;
	}

	/**
	 * 获取正在运行桌面包名(注:存在多个桌面时且未指定默认桌面时,该方法返回"",使用时需处理这个情况)
	 */
	private static String getLauncherPackageName(Context context) {
		final Intent intent = new Intent(Intent.ACTION_MAIN);
		intent.addCategory(Intent.CATEGORY_HOME);
		final ResolveInfo res = context.getPackageManager().resolveActivity(
				intent, 0);
		if (res.activityInfo == null) {
			// should not happen. A home is always installed, isn't it?
			return "";
		}
		if (res.activityInfo.packageName.equals("android")) {
			// 有多个桌面程序存在,且未指定默认项时;
			return "";
		} else {
			return res.activityInfo.packageName;
		}
	}

 

 

分享到:
评论

相关推荐

    android 4.03 15源码

    我的是:D:\Users\Administrator\AppData\Local\Android\android-sdk\platforms\android-15 步骤三:在这个目录下新建一个 sources的文件夹, 然后把源码放入进去(我上传的是压缩包,你解压出来后,把压缩包删了就...

    Android4.03 Root

    在Android操作系统的世界里,"Root"一词...总的来说,Root Android 4.03是一个既有利又有弊的过程,需要用户根据自己的需求和承受风险的能力来决定。在进行之前,确保理解整个流程,遵循安全的指南,并时刻保持谨慎。

    Daemon Tools v4.03 V4.03HE 汉化版

    这个版本Daemon Tools v3.47中文版和Daemon Tools v4.03 V4.03HE 汉化版一样,都是极其经典的版本,网上很难下载到了。安装后,占用硬盘空间不到1M。XP系统正常运行,WIN7我没有试过。 这是非常好用的一个虚拟光驱...

    4.03系统APP提取包

    总的来说,这个4.03系统APP提取包是一个为Android 4.03系统准备的软件包,包含了系统级别的应用程序,特别是安全和核心功能相关的组件。在安装前需要进行特定的准备工作以避免证书冲突,而包内的文件则涵盖了用户...

    android 15 即 4.03

    标题中的“android 15”指的是Android操作系统的第15个版本,这在Android的版本命名体系中对应于冰淇淋三明治(Ice Cream ...开发者和研究者可以通过分析这些源码,学习Android的工作原理,进行系统级别的定制和优化。

    方正超线4.03

    方正超线是一款由方正科技开发的专业字库软件,主要用于设计、排版以及文本处理领域。这款软件的版本4.03代表了一个稳定且功能丰富的更新,...通过不断的技术升级和优化,这款软件在中文字体处理领域保持着领先地位。

    android4.03 jar包源码

    Android 4.0.3,代号冰淇淋三明治(Ice Cream Sandwich),是Google推出的一个重要版本,它为Android平台带来了许多新特性和改进。本篇文章将围绕Android 4.0.3 Jar包源码展开,带你探索这一版本的核心机制,帮助...

    Android4.03开发环境搭建.doc

    Android4.03开发环境搭建.doc

    DietMP3 v4.03

    总的来说,DietMP3 v4.03是一款针对音频爱好者和音乐制作人的理想工具,它以高效压缩技术为支撑,旨在最大化利用存储资源,同时保持尽可能高的音乐品质。对于那些希望在有限的CD介质上存储更多歌曲,或者在移动设备...

    Routersima4.03的CCNA模拟器

    "代码中国.url"则可能是一个链接到“代码中国”网站的快捷方式,该网站可能提供了更多编程和网络技术资源。最后,“Routersima4.03的CCNA模拟器”应是模拟器的主程序,用户需要运行此文件开始学习和练习。 使用...

    Qreport 4.03

    这款控件的出现,极大地简化了开发人员在创建复杂报表时的工作,同时也提供了源码,使得用户可以深入理解其工作原理,进行自定义和扩展。 QReport 4.03 的核心价值在于它的打印报表功能。在软件开发中,报表是数据...

    CTCAE 4.03

    通过标准化的评价和报告流程,CTCAE有助于减少临床试验中的变异性,从而使得不同研究之间的结果可以进行有效比较。此外,CTCAE也支持临床决策制定,为医生提供了关于药物安全性的额外信息,帮助他们在给患者推荐和...

    虚拟光驱工具Deamon Tools4.03.rar

    - `QQ游戏站.url`:这是一个快捷方式文件,指向QQ游戏网站,可能是为了方便用户获取更多游戏资源或信息。 总的来说,Deamon Tools 4.03是一个强大的虚拟光驱解决方案,它简化了对光盘镜像的管理和使用,让数字内容...

    Daemon Tools v4.03 汉化版

    安装过程中,需要注意选择合适的安装路径,并根据个人需求定制安装选项,如是否创建桌面快捷方式等。 总的来说,Daemon Tools v4.03汉化版为中文用户提供了方便、高效的虚拟光驱解决方案,无论是玩游戏还是处理其他...

    MFC源代码 FRAME4.03

    MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 FRAME4.03MFC源代码 ...

    西门子FM 353和FM 354组态包V4.03.09.pdf

    西门子FM 353和FM 354组态包V4.03.09是西门子公司推出的一款针对特定型号电机的组态软件包。组态包(Configuration Package)在工业自动化领域是一种预先配置好的软件集合,它允许工程师快速地将电机驱动器集成到...

    Daemon Tools 4.03中文版

    总的来说,“Daemon Tools 4.03中文版”是旧时代的一款经典虚拟光驱软件,它以其易用性和广泛的格式支持,成为许多IT专业人士和爱好者的首选工具。如果你的系统和需求与此匹配,这个版本无疑是一个实用的选择。不过...

    LameXP 4.03 中文汉化版(LameXP_CN.qm)

    LameXP 4.03语言包下载:本页面下面有下载按扭(小同学很难找到的)。 LameXP 4.03软件下载:http://sourceforge.net/projects/lamexp/files/LameXP.2011-11-12.Release-Static.Build-774.zip/download

    GMS TestSuite Userguide 4.03

    通过Tradefed这一测试执行管理工具和精心设计的Java测试用例,GTS能够有效地检测和验证GMS应用的各项功能,特别是视频播放能力。这对于保障用户体验和维护Google生态系统的稳定性具有重要意义。

    HttpClient-4.03-API

    HttpClient-4.03-API 最新版 chm

Global site tag (gtag.js) - Google Analytics