要特別注意以下這句話導致的無法建立捷徑的問題
很多地方都說這句話的意義是在於防止重複建立捷徑,但是我今天遇到的問題就是由於這句話導致無法在案頭上建立捷徑。
最後我的做法是:
1.用SharedPreferences來判斷是否是第一次進入應用
2.用isInstallShortcut()來判斷是否存有捷徑
3.建立捷徑(
private void createShortCut() { SharedPreferences userini = getSharedPreferences( getString(R.string.useriniXML), Activity.MODE_PRIVATE); Log.e("H3c","sh.."+userini.getInt("seflshotcut", 0)); if (userini.getInt("seflshotcut", 0) == 0) { m_tool.createShortCut(Main.this); SharedPreferences.Editor sEdi = userini.edit(); sEdi.putInt("seflshotcut", 1); sEdi.commit(); } }
private boolean isInstallShortcut() { boolean isInstallShortcut = false; final ContentResolver cr = MarketApplication .getMarketApplicationContext().getContentResolver(); String AUTHORITY = "com.android.launcher.settings"; Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); Cursor c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, "title=?", new String[] { "XXXX" }, null); if (c != null && c.getCount() > 0) { isInstallShortcut = true; } if (c != null) { c.close(); } if (isInstallShortcut) { return isInstallShortcut; } AUTHORITY = "com.android.launcher2.settings"; CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, "title=?", new String[] { "XXXX" }, null); if (c != null && c.getCount() > 0) { isInstallShortcut = true; } return isInstallShortcut; }
3.
/** * 建立捷徑 * */ public void createShortCut(Context contxt) { if (isInstallShortcut()) {// 如果已經建立了一次就不會再建立了 return; } Intent sIntent = new Intent(Intent.ACTION_MAIN); sIntent.addCategory(Intent.CATEGORY_LAUNCHER);// 加入action,和category之後,程式卸載的時候才會主動將該捷徑也卸載 sIntent.setClass(contxt, Login.class); Intent installer = new Intent();// installer.putExtra("duplicate", false); installer.putExtra("android.intent.extra.shortcut.INTENT", sIntent); installer.putExtra("android.intent.extra.shortcut.NAME", "XXXX"); installer.putExtra("android.intent.extra.shortcut.ICON_RESOURCE", Intent.ShortcutIconResource.fromContext(contxt, R.drawable.icon)); installer.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); contxt.sendBroadcast(installer); }
測試:點擊