Android實現快捷卸載第三方應用

jopen 11年前發布 | 12K 次閱讀 Android Android開發 移動開發

1、需要的權限:

 
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  

2、獲取所有應用:

 
    public List<ResolveInfo> getAllPagckage(Context context)  
    {  
    PackageManager pm = context.getPackageManager();  

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);  
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);  
    // 通過查詢,獲得所有ResolveInfo對象.  
    List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(  
    mainIntent, PackageManager.GET_GIDS);  
    // 調用系統排序,根據name排序  
    Collections.sort(resolveInfoList,  
    new ResolveInfo.DisplayNameComparator(pm));  
    return resolveInfoList;  
    }  

3、過濾出第三方應用:

 
    private void filterPackage(List<ResolveInfo> allPackageList)  
    {  
    if (!allPackageList.isEmpty())  
    {  
    list.clear();  
    int size = allPackageList.size();  
    ResolveInfo resolveInfo = null;  
    for (int i = 0; i < size; i++)  
    {  
    resolveInfo = allPackageList.get(i);  
    // 第三方應用  
    if((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)  
    {  
    list.add(resolveInfo);  
    }  
    }  
    }  
    }  

4、卸載:
(注:1、兩種方式均可;2、appPackage為resolveInfo.activityInfo.packageName)
 
public void uninstallApp(Context context, String appPackage)  
{  
Uri packageURI = Uri.parse("package:" + appPackage);  
        //自定義卸載  
// Intent uninstallIntent = new Intent(Intent.ACTION_DELETE,  
// packageURI);  
//((Activity)context).startActivityForResult(uninstallIntent, 0);  
        //調用系統自帶卸載操作進行卸載  
Intent uninstallIntent = new Intent(  
Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);  
context.startActivity(uninstallIntent);  
}  
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!