`

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

    Raize4.03汉化包

    Raize控件是一系列高级的图形用户界面(GUI)组件,它们提供了丰富的外观和功能,能够帮助开发者创建出具有专业级界面的应用程序。 Raize控件集通常包括一系列的可视组件,如按钮、工具栏、标签等,这些组件在...

    DietMP3 v4.03

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

    CTCAE 4.03

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

    Routersima4.03的CCNA模拟器

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

    Qreport 4.03

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

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

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

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

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

    Daemon Tools v4.03 汉化版

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

    Daemon Tools 4.03中文版

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

    MFC源代码 FRAME4.03

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

    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

Global site tag (gtag.js) - Google Analytics