创建快捷方式

	/**
	 * 创建快捷方式
	 */
	private void createShortCut() {
		// 桌面就没此快捷方式,否则桌面有此快捷方式
		if (!hasShortCut(this)) {
			Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");// action
			intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));// 快捷方式名字
			intent.putExtra("duplicate", false); // 是否重复创建快捷方式
			Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.launcher_icon);
			intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);// icon
			intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
					new Intent(getApplicationContext(), GeneratedClassUtils.get(SplashActivity.class))); // 启动界面
			sendBroadcast(intent);// 发送广播
		}
	}

	/**
	 * 判断是否已经存在快捷方式
	 * 
	 * @param context
	 * @return
	 */
	private boolean hasShortCut(Context context) {
		final String AUTHORITY = getAuthorityFromPermission("com.android.launcher.permission.READ_SETTINGS");
		final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true");

		ContentResolver resolver = context.getContentResolver();
		Cursor cursor = resolver.query(CONTENT_URI, null, "title=?", new String[] { context.getString(R.string.app_name) }, null);
		if (cursor != null && cursor.moveToFirst()) {
			cursor.close();
			return true;
		}
		return false;
	}

	/**
	 * 根据权限来获取当前的AUTHORITY
	 * 
	 * @param permission
	 * @return
	 */
	private String getAuthorityFromPermission(String permission) {
		if (permission == null)
			return null;
		List<PackageInfo> packs = this.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
		if (packs != null) {
			for (PackageInfo pack : packs) {
				ProviderInfo[] providers = pack.providers;
				if (providers != null) {
					for (ProviderInfo provider : providers) {
						if (permission.equals(provider.readPermission))
							return provider.authority;
						if (permission.equals(provider.writePermission))
							return provider.authority;
					}
				}
			}
		}
		return null;
	}


相关权限:

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值