Android 创建桌面快捷方式
jopen
11年前
Android手机中生成快捷方式有两种情况,一种是由应用直接在桌面生成;一种是长按桌面,在弹出的快捷菜单中生成。
第一种方式是通过广播(Broadcast)的形式向Luncher发送请求生成快捷方式的。
以下截取该广播的注册信息
<!-- Intent received used to install shortcuts from other applications --> <receiver android:name="com.android.launcher2.InstallShortcutReceiver" android:permission="com.android.launcher.permission.INSTALL_SHORTCUT"> <intent-filter> <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" /> </intent-filter> </receiver>
由此可以看出,要在桌面上创建快捷方式就需要权限了:
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT。
所以在我们的manifest.xml文件中,我们需要加入下面这段话:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
private void createShortcut() { //创建快捷方式的Intent Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //不允许重复创建 shortcutIntent.putExtra("duplicate", false); //快捷方式名称 shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_name)); //快捷图片 Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher_shortcut); shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); //点击快捷图片,运行的程序主入口 shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , TargetActivity.class)); //发送广播。OK sendBroadcast(shortcutIntent); }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.shortcuttest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <!-- 声明 创建和删除快捷方式时声明权限 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.shortcuttest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.shortcuttest.TargetActivity"> <!-- 目标Activity 需要具备 LAUNCHER功能--> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
注意:需要成为快捷方式入口的Activity必须增加以下配置,否则点击快捷方式的时候会报错