• 【Android进阶】快捷图标的创建与移除


    注释已经说得很清楚了,如果有疑问,请留言

    /**
    	 * 添加桌面快捷方式
    	 * 
    	 * @param view
    	 */
    	public void click1(View view) {
    		if (isExit()) {
    			Toast.makeText(getApplicationContext(), "快捷方式已经存在", 0).show();
    			return;
    		}
    		// 取得图标资源
    		Parcelable icon = Intent.ShortcutIconResource.fromContext(
    				getApplicationContext(), R.drawable.logo);
    		Intent intent = new Intent();
    		// 设置意图的动作
    		intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    		// 设置图标的名称
    		intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL");
    		// 设置图标
    		intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    		// 设置意图的动作和类别
    		Intent intent2 = new Intent();
    		intent2.setAction(Intent.ACTION_MAIN);
    		intent2.addCategory(Intent.CATEGORY_LAUNCHER);
    		intent2.setComponent(new ComponentName(this, MainActivity.class));
    		intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);
    		sendBroadcast(intent);
    	}
    

    /**
    	 * 删除桌面快捷方式
    	 * 
    	 * @param view
    	 */
    	public void click2(View view) {
    		Parcelable icon = Intent.ShortcutIconResource.fromContext(
    				getApplicationContext(), R.drawable.logo);
    		Intent intent = new Intent();
    		// 设置意图的动作
    		intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
    		// 设置图标的名称
    		intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL");
    		// 设置图标
    		intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    		// 设置意图的动作和类别
    		Intent intent2 = new Intent();
    		intent2.setAction(Intent.ACTION_MAIN);
    		intent2.addCategory(Intent.CATEGORY_LAUNCHER);
    		intent2.setComponent(new ComponentName(this, MainActivity.class));
    		intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);
    		sendBroadcast(intent);
    	}

    /**
    	 * 判断桌面是否已经存在快捷方式
    	 * 
    	 * @return
    	 */
    	private boolean isExit() {
    		Uri uri = null;
    		// 不同版本中的Uri不同
    		if (getSdkVersion() < 8) {
    			uri = Uri
    					.parse("content://com.android.launcher.settings/favorites");
    		} else {
    			uri = Uri
    					.parse("content://com.android.launcher2.settings/favorites");
    		}
    		String selection = "title=?";
    		String[] selectionArgs = new String[] { "LOL" };
    		Cursor cursor = getContentResolver().query(uri, null, selection,
    				selectionArgs, null);
    		if (cursor.moveToNext()) {
    			cursor.close();
    			return true;
    		} else {
    			cursor.close();
    			return false;
    		}
    	}
    

    /**
    	 * 获得手机SDK的版本
    	 * 
    	 * @return
    	 */
    	private int getSdkVersion() {
    		return android.os.Build.VERSION.SDK_INT;
    	}

    需要声明的权限

        <!-- 添加快捷方式权限 -->
        <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
        <!-- 读取设置权限 -->
        <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
        <!-- 删除快捷方式权限 -->
        <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>

    点击下载源代码

  • 相关阅读:
    maven上传jar包规范
    java.util.ConcurrentModificationException
    求集合中的最大值和最小值
    对象/集合转换成json
    字符串直接赋值和构造赋值的区别
    CSV文件读取
    读取properties配置文件
    图片轮播 js代码
    工作流数据库字段设计-审批流程。。
    @Html.Partials 加载分布视图传参数
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3749569.html
Copyright © 2020-2023  润新知