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; import android.content.pm.PackageManager; 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" /> */ 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 (!isShortcutExist(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); } } public static boolean isShortcutExist(Context context) { ContentResolver contentResolver = context.getContentResolver(); String AUTHORITY = null; if (Build.VERSION.SDK_INT >= 8) { AUTHORITY = "com.android.launcher2.settings"; } else { AUTHORITY = "com.android.launcher.settings"; } String title = ""; PackageManager packageManager = context.getPackageManager(); try { title = packageManager.getApplicationLabel( packageManager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA)).toString(); } catch (NameNotFoundException e) { e.printStackTrace(); } Uri uri = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); Cursor cursor = contentResolver.query(uri, null,"title=?", new String[] { title },null); if (cursor != null && cursor.getCount() > 0) { return true; } return false; } }
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>