`

Android中创建和检测快捷方式

 
阅读更多
public class ShortcutUtil {

	/**
	 * 创建快捷方式
	 * 
	 * @param context
	 */
	public static void createShortcut(Context context, Class<?> target) {
		// <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
		Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
		intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
		intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.app_name));
		intent.putExtra("duplicate", false);
		Intent sIntent = new Intent(Intent.ACTION_MAIN);
		sIntent.addCategory(Intent.CATEGORY_LAUNCHER);// 加入action,和category之后,程序卸载的时候才会主动将该快捷方式也卸载
		sIntent.setClass(context, target);
		intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, sIntent);
		context.sendBroadcast(intent);
	}

	/**
	 * 判断桌面上是否有的快捷方式
	 * 
	 * @return
	 */
	public static boolean hasShortcut(Context context) {
		final ContentResolver cr = context.getContentResolver();
		final String AUTHORITY = "com.android.launcher.settings";
		final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true");
		// <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
		Cursor c = cr.query(CONTENT_URI, new String[] { "intent" }, null, null, null);
		if (c == null) {
			// 注: 2.1update和2.2版本的真机上测试无法访问com.android.launcher.settings,2.1update1的模拟器上可以
			// ERROR/ActivityThread(1136): Failed to find provider info for com.android.launcher.settings
			return false;
		}
		while (c.moveToNext()) {
			String intentstring = c.getString(c.getColumnIndex("intent"));
			if (intentstring == null) {
				continue;
			}
			String componentString = getComponentString(intentstring);
			if (componentString.startsWith(context.getPackageName())) {
				return true;
			}
		}
		return false;
	}

	private static String getComponentString(String intentInfo) {
		// intent info 的格式:intent=#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.allstar.tanzhi/.activities.StartActivity;end
		int start = intentInfo.indexOf("component") + 9 + 1;
		int end = intentInfo.indexOf(";", start);
		return intentInfo.substring(start, end);
	}

 

分享到:
评论

相关推荐

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

    在Android开发中,创建桌面快捷方式是提升用户体验的重要一环,允许用户快速访问应用程序的关键功能。本篇将详细讲解如何检查Android应用是否已创建桌面快捷方式以及如何创建快捷方式。 首先,我们需要理解Android...

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

    这个话题主要涵盖的是如何在Android应用中检查用户是否赋予了创建桌面快捷方式的权限,以及如何适当地处理这一过程。 首先,我们需要理解Android的权限系统。在Android 6.0(API级别23)之前,应用在安装时会一次性...

    android 快捷方式的权限判断。

    在Android系统中,快捷方式是一种方便用户快速启动应用或跳转至特定功能的方式。随着不同手机厂商对Android系统的定制,各个品牌如华为、小米、OPPO、vivo等可能有自己的快捷方式实现。为了确保应用能够正常创建和...

    Android快捷方式

    创建快捷方式可以通过调用`ShortcutManager`类的相关API来实现,这个类从Android Nougat(API 24)开始引入,提供了动态创建和管理快捷方式的功能。 在Android中,有两种类型的快捷方式:静态快捷方式和动态快捷...

    Android-Shortbread从快捷方式注释生成App快捷方式的Android库

    Android-Shortbread是一款专为Android开发者设计的库,它简化了在Android应用中创建和管理快捷方式的过程。基于Android的快捷方式API,Shortbread允许开发者通过注解来定义快捷方式,从而使得代码更加简洁、易读且...

    提示创建App快捷方式

    2. **检测快捷方式状态**:开发者可以使用`ShortcutManager`类(Android API 25及以上)或者早期的`PackageManager`类来检测App的快捷方式是否已经存在。对于低版本Android,可能需要使用反射等技术来实现兼容。 3....

    Android创建快捷图标实例

    以上就是一个简单的Android创建快捷方式的实例。需要注意的是,从Android P(API 28)开始,系统引入了动态短 cuts,它们允许更丰富的交互,如自定义UI和动态更新。你可以根据需要进一步学习和适配这些新特性,以...

    创建桌面快捷方式

    在Android系统中,辅助功能(Accessibility Services)是一个强大的特性,允许开发者创建应用程序来帮助有特殊需求的用户或者提供更高效的操作方式。通过辅助功能服务,应用程序可以监听并响应系统的各种事件,例如...

    android系统判断快捷方式是否存在

    在Android开发中,有时候我们需要检测用户是否已经为应用程序创建了桌面快捷方式。这在某些应用场景下是非常有用的,比如为了提高用户体验,当检测到未创建快捷方式时可以引导用户进行创建。然而,在不同版本的...

    android程序卸载后无法删除桌面快捷方式的解决办法

    当一个Android应用程序被安装到用户的设备上时,通常会在设备的主屏幕上创建一个快捷方式图标,以便用户快速启动该应用。然而,在某些情况下,即使用户通过系统的应用管理器或应用内部提供的卸载功能成功卸载了应用...

    android 桌面APP图标增加角标功能

    总的来说,为了让Android应用在华为、三星等手机上显示消息角标,我们需要利用Android的快捷方式API,创建和更新快捷方式来显示角标信息。同时,考虑到兼容性问题,可能还需要设计适配不同设备的解决方案。通过这种...

    软件创建桌面快件方式

    根据提供的文件信息,我们可以深入探讨如何在Android平台上创建和管理桌面快捷方式的相关知识点。 ### 创建桌面快捷方式 在Android开发中,为应用添加桌面快捷方式的功能对于提高用户体验至关重要。这通常涉及通过...

    android shortcut 快捷键方式

    1. 检测设备:在代码中检测当前设备的品牌和型号,针对已知存在问题的设备提供替代方案,如使用其他启动方式。 2. 使用系统API:尽可能使用最新的系统API,因为系统更新通常会修复一些已知问题。但同时要注意最低...

    安卓启动退出网络判断相关-快捷图标的创建与移除.rar

    综上所述,这个压缩包涵盖了Android开发中创建快捷图标、检测网络状态、管理应用启动和退出等多个重要知识点。对于初学者或希望深入理解这些功能的开发者来说,这是一个有价值的参考资料。在实际应用中,还需要考虑...

    Android studio Flamingo 版本 2022.2.1 RC 1

    2. **代码编辑器增强**:Android Studio通常会在新版本中优化代码编辑器,提供更好的代码补全、错误检测和重构功能。这可能会包括更快的索引和更智能的代码分析。 3. **性能提升**:每次更新都会关注性能和稳定性,...

    Android Studio 3.5安装包

    安装过程中,用户可以选择自定义安装路径、是否创建桌面快捷方式以及是否添加系统路径等选项。安装完成后,Android Studio会自动检测并安装所需的SDK组件,包括Java Development Kit (JDK)。 **2. 改进的启动速度**...

    Android-目前主流的leanback风格的androidtv应用

    3. **App Shortcuts**: 可以设置快捷方式,方便用户一键访问常用功能或内容。 **总结** "Android-目前主流的leanback风格的android tv应用"意味着你需要关注如何利用Android TV Leanback库来创建用户友好的电视应用...

    android 防支付宝支付界面

    "ViewDemo"可能是一个示例项目,用于演示如何在Android应用中正确集成和保护支付宝支付界面。它可能包含了以下几个部分: - SDK集成:展示了如何在Android工程中添加支付宝SDK依赖,并初始化配置。 - 创建支付...

Global site tag (gtag.js) - Google Analytics