Android中創建和刪除快捷方式示例 Android系統中支持快捷方式這一特性,這樣使得用戶更快更好地使用應用或者軟件,當然,有些系統提供瞭直接拖拽創建快捷方式的功能,這裡我們將簡單介紹一下android中使用代碼如何創建和刪除快捷方式。 以下源碼來源於互聯網,本人稍作修改和註釋。原理主要是使用android系統的一個一個廣播機制,我們需要做的是實例一個Intent對象,並對這個對象做制定的設置,然後發送一個廣播就可以瞭,然後其他的操作,委托給別的程序做就可以瞭,就是這麼簡單。源碼如下。
1. package ps.androidyue.shortcutdemo;
2.
3. import android.app.Activity;
4. import android.content.ComponentName;
5. import android.content.Intent;
6. import android.content.Intent.ShortcutIconResource;
7. import android.os.Bundle;
8. import android.view.View;
9. import android.widget.Button;
10.
11. public class ShortCutDemoActivity extends Activity {
12. //安裝和卸載快捷方式動作常量
13. private final String INTENT_ACTION_INSTALL_SHORTCUT="com.android.launcher.action.INSTALL_SHORTCUT";
14. private final String INTENT_ACTION_UNINSTALL_SHORTCUT="com.android.launcher.action.UNINSTALL_SHORTCUT";
15. private Button btnAddShortCut,btnRemoveShortCuts;
16. /** Called when the activity is first created. */
17. @Override
18. public void onCreate(Bundle savedInstanceState) {
19. super.onCreate(savedInstanceState);
20. setContentView(R.layout.main);
21. this.initializeViews();
22. }
23.
24. /*
25. * 初始化需要的視圖
26. */
27. private void initializeViews(){
28. this.initializeButtons();
29. }
30.
31. /*
32. * 初始化需要的button
33. */
34. private void initializeButtons(){
35. this.btnAddShortCut=(Button)this.findViewById(R.id.btnAddShortCuts);
36. this.btnAddShortCut.setOnClickListener(new View.OnClickListener() {
37.
38. @Override
39. public void onClick(View v) {
40. //添加快捷方式
41. addShortcut();
42. }
43. });
44. this.btnRemoveShortCuts=(Button)this.findViewById(R.id.btnRemoveShortCuts);
45. this.btnRemoveShortCuts.setOnClickListener(new View.OnClickListener() {
46.
47. @Override
48. public void onClick(View v) {
49. //刪除快捷方式
50. delShortcut();
51. }
52. });
53. }
54.
55.
56. /*
57. * 為程序創建桌面快捷方式
58. */
59. private void addShortcut(){
60. //實例化具有安裝快捷方式動作的Intent對象
61. Intent shortcut = new Intent(this.INTENT_ACTION_INSTALL_SHORTCUT);
62. //快捷方式的名稱
63. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
64. shortcut.putExtra("duplicate", false); //不允許重復創建
65.
66. //指定當前的Activity為快捷方式啟動的對象: 如 com.everest.video.VideoPlayer
67. //註意: ComponentName的第二個參數必須加上點號(.),否則快捷方式無法啟動相應程序
68. ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName());
69. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
70. //快捷方式的圖標
71. ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
72. shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
73. //發送創建快捷方式的廣播
74. sendBroadcast(shortcut);
75. }
76.
77. /*
78. * 刪除程序的快捷方式
79. */
80. private void delShortcut(){
81. Intent shortcut = new Intent(this.INTENT_ACTION_UNINSTALL_SHORTCUT);
82.
83. //快捷方式的名稱 www.aiwalls.com
84. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
85.
86. //指定當前的Activity為快捷方式啟動的對象: 如 com.everest.video.VideoPlayer
87. //註意: ComponentName的第二個參數必須是完整的類名(包名+類名),否則無法刪除快捷方式
88. String appClass = this.getPackageName() + "." +this.getLocalClassName();
89. ComponentName comp = new ComponentName(this.getPackageName(), appClass);
90. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
91. //發送卸載快捷方式的圖標
92. sendBroadcast(shortcut);
93.
94. }
95. }
註意:必須要在manifest.xml中聲明權限
1. <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
2. <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
摘自 BossDarcy的專欄