Android手机中生成快捷方式有两种情况,一种是由应用直接在桌面生成;一种是长按桌面,在弹出的快捷菜单中生成。

第一种方式是通过广播(Broadcast)的形式向Luncher发送请求生成快捷方式的。

以下截取该广播的注册信息

 

1
2
3
4
5
6
7
8
<!-- 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"/>

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?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必须增加以下配置,否则点击快捷方式的时候会报错

1
2
3
4
<intent-filter
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" /> 
            </intent-filter>
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()