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发送请求生成快捷方式的。
以下截取该广播的注册信息
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
>
|
from:http://www.open-open.com/lib/view/open1392187109379.html