一般android應用程式安裝完成後是不會自動建立快捷方式的,是以可以自己在程式啟動時實作。
需要權限 <uses-permission android:name="com.android.launcher.permission.install_shortcut"/>
和要點選快捷方式對應的那個activity的屬性。
<intent-filter>
<action android:name="android.intent.action.main" />
<category android:name="android.intent.category.launcher" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.create_shortcut"></action>
如何判斷快捷方式是否已經建立的方法,因為快捷方式資訊是儲存在com.android.launcher的launcher.db的favorites表中,是以可以查詢此表得到,
需要權限 <uses-permission android:name="com.android.launcher.permission.read_settings"/>
下面給個例子分享給各位:
[java] view
plaincopy
import android.app.activity;
import android.content.contentresolver;
import android.content.intent;
import android.content.intent.shortcuticonresource;
import android.database.cursor;
import android.graphics.bitmapfactory;
import android.net.uri;
import android.os.bundle;
public class addshortcutactivity extends activity {
/** called when the activity is first created. */
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
boolean flag =ifaddshortcut();//如果已經建立,則不需要在建立
if(flag==false){
addshortcut();
}
}
public void addshortcut(){
intent shortcut = new intent("com.android.launcher.action.install_shortcut");
// 設定屬性
shortcut.putextra(intent.extra_shortcut_name, getresources().getstring(r.string.app_name));
shortcuticonresource iconres = intent.shortcuticonresource.fromcontext(addshortcutactivity.this, r.drawable.icon);
shortcut.putextra(intent.extra_shortcut_icon,iconres);
// 是否允許重複建立
shortcut.putextra("duplicate", false);
intent intent = new intent(intent.action_main);
intent.setflags(intent.flag_activity_reset_task_if_needed);
intent.addflags(intent.flag_activity_launched_from_history);
intent.addcategory(intent.category_launcher);
intent.setclass(addshortcutactivity.this, addshortcutactivity.class);
// 設定啟動程式
system.out.println("createicon");
shortcut.putextra(intent.extra_shortcut_intent, intent);
addshortcutactivity.this.sendbroadcast(shortcut);
public boolean ifaddshortcut(){
boolean isinstallshortcut = false ;
final contentresolver cr = addshortcutactivity.this.getcontentresolver();
//本人的2.2系統是”com.android.launcher2.settings”,網上見其他的為"com.android.launcher.settings"
final string authority = "com.android.launcher2.settings";
final uri content_uri = uri.parse("content://" +
authority + "/favorites?notify=true");
cursor c = cr.query(content_uri,
new string[] {"title","iconresource" },
"title=?",
new string[] {getstring(r.string.app_name ) }, null);//xxx表示應用名稱。
if(c!=null && c.getcount()>0){
isinstallshortcut = true ;
system.out.println("已建立");
}
return isinstallshortcut ;
}
[html] view
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.shao.add"
android:versioncode="1"
android:versionname="1.0">
<uses-sdk android:minsdkversion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".addshortcutactivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.main" />
<category android:name="android.intent.category.launcher" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.create_shortcut"></action>
</activity>
</application>
<uses-permission android:name="com.android.launcher.permission.read_settings"/>
<uses-permission android:name="com.android.launcher.permission.install_shortcut"/>
</manifest>