Android桌面快捷方式的设置(一)

MainActivity如下:

package cn.testshortcut;

import java.util.List;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.Cursor;
/**
 * Demo描述:
 * 桌面快捷方式的设置
 *
 * 备注说明:
 * 该方式只适合Android原生系统和非原生系统
 *
 * 权限设置:
 * <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" />
 */
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		addShortcutToDesktop(MainActivity.this);
	}

	public static void addShortcutToDesktop(Context context) {
		if (!hasShortcut(context)) {
			Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
			shortcutIntent.putExtra("duplicate", false);
			shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,context.getString(R.string.app_name));
			shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
			Intent.ShortcutIconResource.fromContext(context,R.drawable.ic_launcher));
			Intent intent = new Intent(context, MainActivity.class);
			intent.setAction("android.intent.action.MAIN");
			intent.addCategory("android.intent.category.LAUNCHER");
			shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
			context.sendBroadcast(shortcutIntent);
		}
	}

	private static boolean hasShortcut(Context context) {
		String AUTHORITY = getAuthorityFromPermission(context,"com.android.launcher.permission.READ_SETTINGS");
		System.out.println(" AUTHORITY ..." + AUTHORITY);
		if (AUTHORITY == null) {
			return false;
		}
		Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY+ "/favorites?notify=true");
		String title = "";
		final PackageManager packageManager = context.getPackageManager();
		try {
			title = packageManager.getApplicationLabel(
					packageManager.getApplicationInfo(context.getPackageName(),
					PackageManager.GET_META_DATA)).toString();
		} catch (NameNotFoundException e) {
			        e.printStackTrace();
		}
		Cursor c = context.getContentResolver().
				   query(CONTENT_URI,new String[] { "title" }, "title=?", new String[] { title },null);
		if (c != null && c.getCount() > 0) {
			return true;
		}
		return false;
	}

	private static String getAuthorityFromPermission(Context context,String permission) {
		if (TextUtils.isEmpty(permission)) {
			return null;
		}
		List<PackageInfo> packageInfoList =
		context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
		if (packageInfoList == null) {
			return null;
		}
		for (PackageInfo packageInfo : packageInfoList) {
			ProviderInfo[] providerInfos = packageInfo.providers;
			if (providerInfos != null) {
				for (ProviderInfo providerInfo : providerInfos) {
					if (permission.equals(providerInfo.readPermission)||
						permission.equals(providerInfo.writePermission)) {
						return providerInfo.authority;
					}
				}
			}
		}
		return null;
	}
}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="建立桌面快捷方式"
        android:layout_centerInParent="true"
    />

</RelativeLayout>

 

时间: 2024-08-30 18:47:28

Android桌面快捷方式的设置(一)的相关文章

Android桌面快捷方式的设置(二)

MainActivity如下: package cn.testshortcut; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; im

使用程序创建Android桌面快捷方式

下面是使用程序创建Android桌面快捷方式的实例代码: public static void addShortcut(Context context) { String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; // 快捷方式要启动的包 Intent intent = gotoWhere(context); // 设置快捷方式的参数 Intent shortcutIntent =

背景设置-android桌面开发如何设置系统内置动态壁纸

问题描述 android桌面开发如何设置系统内置动态壁纸 急!!! 我自己编写了一个android桌面,添加壁纸设置功能,调用系统壁纸选择器后,设置系统动态壁纸无效果,发现桌面背景还是没变化,但是设置静态的图片又可以,求大神大师们解答? 是与布局空间的属性有关还是与AndroidManifest.xml中activity属性参数有关?

搜狗手写输入法桌面快捷方式怎么设置?

  1.右键单击 2.如图,选择扩展功能管理器 3.点击推荐扩展,点击安装手写输入. 4.安装完成退出. 5.桌面右键单击新建----快捷方式. 6.点击浏览 7.找到当初安装搜狗输入法的位置,找到SougouExtension,点击 8.找到handinput,点击 9.再找到1.1.0.38,点击,可以看到handinput, 10.选择handinput,点击确定 11.点击下一步 12.可以修改下名字,比如手写输入法,或者不改,点击完成. 13.然后就可以看到桌面上出现快捷方式了. 14

android 为应用程序创建桌面快捷方式技巧分享_Android

我们开发一款软件后,如果手机装的软件过多,去翻的话会很难翻的,所以,在主页面有一个快捷方式的话会很不错的,下面是详细代码: 复制代码 代码如下: /** * 创建桌面快捷方式 */ private void createShortcut() { SharedPreferences setting = getSharedPreferences("silent.preferences", 0); // 判断是否第一次启动应用程序(默认为true) boolean firstStart =

Android应用创建桌面快捷方式代码_Android

android的快捷方式比较简单,就是发一个系统的广播,然后为快捷方式设置Intent--- package com.xikang.android.slimcoach.utils; /** * @author huiych * 创建快捷方式 * @created 2013-02-21 * */ import android.content.Intent; import android.os.Parcelable; import com.xikang.android.slimcoach.AppXi

Android如何创建桌面快捷方式_Android

Android创建桌面的快捷方式 概述 :创建桌面快捷方式相当与创建一个程序的入口,就像我们程序在安装完毕后会自动创建一个图标到桌面.其实创建桌面快捷方式跟创建一个程序入口差不多,但是像QQ会话一样创建一个QQ好友的会话快捷方式,就得动态的创建图标,名字了. 1.首先权限是必不可少的 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 2.然后就是在你项目配置

android 为应用程序创建桌面快捷方式技巧分享

我们开发一款软件后,如果手机装的软件过多,去翻的话会很难翻的,所以,在主页面有一个快捷方式的话会很不错的,下面是详细代码: 复制代码 代码如下: /** * 创建桌面快捷方式 */ private void createShortcut() { SharedPreferences setting = getSharedPreferences("silent.preferences", 0); // 判断是否第一次启动应用程序(默认为true) boolean firstStart =

Android如何创建桌面快捷方式

Android创建桌面的快捷方式 概述 :创建桌面快捷方式相当与创建一个程序的入口,就像我们程序在安装完毕后会自动创建一个图标到桌面.其实创建桌面快捷方式跟创建一个程序入口差不多,但是像QQ会话一样创建一个QQ好友的会话快捷方式,就得动态的创建图标,名字了. 1.首先权限是必不可少的 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 2.然后就是在你项目配置