Android 創(chuàng)建/驗證/刪除桌面快捷方式(已測試可用)
更新時間:2013年02月06日 17:42:09 作者:
桌面快捷方式的出現(xiàn)方便了用戶操作,在某些程度上提高了用戶體驗,接下來將介紹下Android創(chuàng)建/驗證/刪除桌面快捷方式的實現(xiàn)思路及代碼,感興趣的朋友可以了解下,或許本文可以幫助到你
測試環(huán)境為Adnroid 2.1以上。
第一步:AndroidManifest.xml 權(quán)限配置:
添加快捷方式權(quán)限:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
驗證快捷方式是否存在權(quán)限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
刪除快捷方式權(quán)限:
<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());
/*以下兩句是為了在卸載應(yīng)用的時候同時刪除桌面快捷方式*/
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
//不允許重復(fù)創(chuàng)建
shortcutintent.putExtra("duplicate", false);
//需要現(xiàn)實的名稱
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);
//發(fā)送廣播。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);
//在網(wǎng)上看到到的基本都是一下幾句,測試的時候發(fā)現(xiàn)并不能刪除快捷方式。
//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));
/**改成以下方式能夠成功刪除,估計是刪除和創(chuàng)建需要對應(yīng)才能找到快捷方式并成功刪除**/
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;
}
}
調(diào)用測試代碼:
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);
}
}
在網(wǎng)上找了很久都是一樣的代碼,刪除那塊搞了一個下午才弄好,其實很簡單的東東。
第一次發(fā)文章,Adnroid新人。多多交流和指導(dǎo)呀。呵呵。
第一步:AndroidManifest.xml 權(quán)限配置:
添加快捷方式權(quán)限:
復(fù)制代碼 代碼如下:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
驗證快捷方式是否存在權(quán)限:
復(fù)制代碼 代碼如下:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
刪除快捷方式權(quán)限:
復(fù)制代碼 代碼如下:
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
代碼:
復(fù)制代碼 代碼如下:
public class ShortCutSample {
/**
* 添加快捷方式
* */
public void creatShortCut(Activity activity,String shortcutName,int resourceId)
{
Intent intent = new Intent();
intent.setClass(activity, activity.getClass());
/*以下兩句是為了在卸載應(yīng)用的時候同時刪除桌面快捷方式*/
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
//不允許重復(fù)創(chuàng)建
shortcutintent.putExtra("duplicate", false);
//需要現(xiàn)實的名稱
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);
//發(fā)送廣播。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);
//在網(wǎng)上看到到的基本都是一下幾句,測試的時候發(fā)現(xiàn)并不能刪除快捷方式。
//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));
/**改成以下方式能夠成功刪除,估計是刪除和創(chuàng)建需要對應(yīng)才能找到快捷方式并成功刪除**/
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;
}
}
調(diào)用測試代碼:
復(fù)制代碼 代碼如下:
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);
}
}
在網(wǎng)上找了很久都是一樣的代碼,刪除那塊搞了一個下午才弄好,其實很簡單的東東。
第一次發(fā)文章,Adnroid新人。多多交流和指導(dǎo)呀。呵呵。
相關(guān)文章
詳解如何在Android studio中更新sdk版本和build-tools版本
這篇文章主要介紹了如何在Android studio中更新sdk版本和build-tools版本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Android之內(nèi)置和外置sdcard路徑顯示并且寫入數(shù)據(jù)的方法
今天小編就為大家分享一篇Android之內(nèi)置和外置sdcard路徑顯示并且寫入數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
講解Android中的Widget及AppWidget小工具的創(chuàng)建實例
這篇文章主要介紹了講解Android中的Widget及Widget的創(chuàng)建實例,文中的例子展示了通過RemoteView來溝通AppWidgetProvider與AppWidgetHostView的方法,需要的朋友可以參考下2016-03-03
Android自定義ViewFlipper實現(xiàn)滾動效果
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewFlipper實現(xiàn)滾動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08
Android TextView字體顏色設(shè)置方法小結(jié)
這篇文章主要介紹了Android TextView字體顏色設(shè)置方法,結(jié)合實例形式總結(jié)分析了Android開發(fā)中TextView設(shè)置字體顏色的常用技巧,需要的朋友可以參考下2016-02-02
Android?Navigation重建Fragment問題分析及解決
這篇文章主要介紹了Android?Navigation重建Fragment問題分析及解決,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
Android AIDL實現(xiàn)兩個APP間的跨進(jìn)程通信實例
這篇文章主要為大家詳細(xì)介紹了Android AIDL實現(xiàn)兩個APP間的跨進(jìn)程通信實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04

