添加桌面快捷方式,非常簡單,只需三步:
1、創建一個添加快捷方式的Intent,該Intent的Action為com.android.launcher.action.INSTALL_SHORTCUT。
2、通過為該Intent添加Extra屬性來設置快捷方式的標題、圖標及快捷方式對應啟動的程序。
3、調用sendBroadcast()方法發送廣播即可添加快捷方式。
下面用一個簡單示例來演示,在該應用程序中,只給出了添加桌面快捷方式的內容,程序的具體應用無須給出,第一次安裝該程序後,會在桌面創建快捷方式,以後不會再創建快捷方式。代碼如下:
Activity:
[java]
package com.home.activity;
import com.example.testshortcut.R;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Parcelable;
import android.widget.Toast;
public class TestShortcutActivity extends Activity {
private SharedPreferences sp;
private Editor editor;
private int count = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 獲取SharedPreferences對象
sp = this.getSharedPreferences("testshortcut", MODE_PRIVATE);
// 得到Editor對象
editor = sp.edit();
// 讀取SharedPreferences對象中鍵為count的值
int readCount = sp.getInt("count", 0);
if (readCount > 0) {
Toast.makeText(this, "快捷方式已存在,不必再創建", Toast.LENGTH_LONG).show();
return;
}
// 創建添加快捷方式的Intent
Intent addIntent = new Intent(
"com.android.launcher.action.INSTALL_SHORTCUT");
// 快捷方式的標題
String title = "我的應用";
// 加載快捷方式圖標
Parcelable icon = Intent.ShortcutIconResource.fromContext(this,
R.drawable.ic_launcher);
// 創建點擊快捷方式後再次啟動的程序,這裡啟動自己
Intent myIntent = new Intent(this, TestShortcutActivity.class);
// 設置快捷方式的標題
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
// 設置快捷方式的圖標
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
// 設置快捷方式對應的Intent
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, myIntent);
// 發送廣播添加快捷方式
sendBroadcast(addIntent);
// 把計數寫入文件
editor.putInt("count", count);
// 提交修改
editor.commit();
}
}
package com.home.activity;
import com.example.testshortcut.R;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Parcelable;
import android.widget.Toast;
public class TestShortcutActivity extends Activity {
private SharedPreferences sp;
private Editor editor;
private int count = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 獲取SharedPreferences對象
sp = this.getSharedPreferences("testshortcut", MODE_PRIVATE);
// 得到Editor對象
editor = sp.edit();
// 讀取SharedPreferences對象中鍵為count的值
int readCount = sp.getInt("count", 0);
if (readCount > 0) {
Toast.makeText(this, "快捷方式已存在,不必再創建", Toast.LENGTH_LONG).show();
return;
}
// 創建添加快捷方式的Intent
Intent addIntent = new Intent(
"com.android.launcher.action.INSTALL_SHORTCUT");
// 快捷方式的標題
String title = "我的應用";
// 加載快捷方式圖標
Parcelable icon = Intent.ShortcutIconResource.fromContext(this,
R.drawable.ic_launcher);
// 創建點擊快捷方式後再次啟動的程序,這裡啟動自己
Intent myIntent = new Intent(this, TestShortcutActivity.class);
// 設置快捷方式的標題
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
// 設置快捷方式的圖標
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
// 設置快捷方式對應的Intent
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, myIntent);
// 發送廣播添加快捷方式
sendBroadcast(addIntent);
// 把計數寫入文件
editor.putInt("count", count);
// 提交修改
editor.commit();
}
}
權限:
[html]
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>Activity配置:
[html]
<activity
android:name="com.home.activity.TestShortcutActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 定義添加到桌面Launcher中 -->
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
</activity>
<activity
android:name="com.home.activity.TestShortcutActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 定義添加到桌面Launcher中 -->
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
</activity>