Android手机中生成快捷方式有两种情况,一种是由应用直接在桌面生成;一种是长按桌面,在弹出的快捷菜单中生成。
第一种方式是通过广播(Broadcast)的形式向Luncher发送请求生成快捷方式的。
由此可以看出,要在桌面上创建快捷方式就需要权限了:
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT。
所以在我们的manifest.xml文件中,我们需要加入下面这段话:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
第一种方式是通过广播(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必须增加以下配置,否则点击快捷方式的时候会报错
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>