編輯:Android開發實例
測試環境為Adnroid 2.1以上。
第一步:AndroidManifest.xml 權限配置:
添加快捷方式權限:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
驗證快捷方式是否存在權限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
刪除快捷方式權限:
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
代碼:
- public class ShortCutSample {
- /**
- * 添加快捷方式
- * */
- public void creatShortCut(Activity activity,String shortcutName,int resourceId)
- {
- Intent intent = new Intent();
- intent.setClass(activity, activity.getClass());
- /*以下兩句是為了在卸載應用的時候同時刪除桌面快捷方式*/
- intent.setAction("android.intent.action.MAIN");
- intent.addCategory("android.intent.category.LAUNCHER");
- Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
- //不允許重復創建
- shortcutintent.putExtra("duplicate", false);
- //需要現實的名稱
- shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
- //快捷圖片
- Parcelable icon = Intent.ShortcutIconResource.fromContext(activity.getApplicationContext(), resourceId);
- shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
- //點擊快捷圖片,運行的程序主入口
- shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
- //發送廣播。OK
- activity.sendBroadcast(shortcutintent);
- }
- /**
- * 刪除快捷方式
- * */
- public void deleteShortCut(Activity activity,String shortcutName)
- {
- Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
- //快捷方式的名稱
- shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,shortcutName);
- //在網上看到到的基本都是一下幾句,測試的時候發現並不能刪除快捷方式。
- //String appClass = activity.getPackageName()+"."+ activity.getLocalClassName();
- //ComponentName comp = new ComponentName( activity.getPackageName(), appClass);
- //shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
- /**改成以下方式能夠成功刪除,估計是刪除和創建需要對應才能找到快捷方式並成功刪除**/
- Intent intent = new Intent();
- intent.setClass(activity, activity.getClass());
- intent.setAction("android.intent.action.MAIN");
- intent.addCategory("android.intent.category.LAUNCHER");
- shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,intent);
- activity.sendBroadcast(shortcut);
- }
- /**
- * 判斷是否存在快捷方式
- * */
- public boolean hasShortcut(Activity activity,String shortcutName)
- {
- String url = "";
- int systemversion = Integer.parseInt(android.os.Build.VERSION.SDK);
- /*大於8的時候在com.android.launcher2.settings 裡查詢(未測試)*/
- if(systemversion < 8){
- url = "content://com.android.launcher.settings/favorites?notify=true";
- }else{
- url = "content://com.android.launcher2.settings/favorites?notify=true";
- }
- ContentResolver resolver = activity.getContentResolver();
- Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",new String[] {shortcutName}, null);
- if (cursor != null && cursor.moveToFirst()) {
- cursor.close();
- return true;
- }
- return false;
- }
- }
調用測試代碼:
- public class mainActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ShortCutSample sample =new ShortCutSample();
- String shortcutName=getString(R.string.app_name);
- if(sample.hasShortcut(this, shortcutName))
- sample.deleteShortCut(this,shortcutName);
- else
- sample.creatShortCut(this,shortcutName,R.drawable.icon);
- }
- }
在前面的一篇文章中,簡單的介紹了一下如何實現軟鍵盤不自動彈出,使用的方法是設置android:windowSoftInput
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩