如何判断快捷方式是否已经创建的方法,因为快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中,所以可以查询此表得到
一般android应用程序安装完成后是不会自动创建快捷方式的,所以可以自己在程序启动时实现。
需要权限
和要点击快捷方式对应的那个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> </intent-filter>
如何判断快捷方式是否已经创建的方法,因为快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中,所以可以查询此表得到,
需要权限
下面给个例子分享给各位:
以下是代码片段:
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 ; } }
以下是代码片段:
<?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> </intent-filter> </activity> </application> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> </manifest>