如何判断快捷方式是否已经创建的方法,因为快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中,所以可以查询此表得到
一般android应用程序安装完成后是不会自动创建快捷方式的,所以可以自己在程序启动时实现。
需要权限
和要点击快捷方式对应的那个activity的属性。
以下是代码片段:
如何判断快捷方式是否已经创建的方法,因为快捷方式信息是保存在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 ; }}
以下是代码片段: