Android 创建桌面快捷方式

jopen 10年前

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>  
</div> </div>
由此可以看出,要在桌面上创建快捷方式就需要权限了:
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);            }  
</div> </div>

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>  
</div> </div>


注意:需要成为快捷方式入口的Activity必须增加以下配置,否则点击快捷方式的时候会报错

<intent-filter>                    <action android:name="android.intent.action.MAIN" />                    <category android:name="android.intent.category.LAUNCHER" />                </intent-filter>  
</div> </div>