安卓7.1卸载非系统apk
import android.content.pm.IPackageDeleteObserver;
import android.content.pm.PackageManager;
import java.util.List;
import java.util.ArrayList;
import android.content.pm.PackageInfo;
import android.util.Log;
import android.content.pm.ApplicationInfo;
/**
* 获取非系统应用列表,并卸载
*/
private void resetUninstallUserApp() {
PackageManager pm = getActivity().getPackageManager();
// Return a List of all packages that are installed on the device.
List<PackageInfo> packages = pm.getInstalledPackages(0);
for (PackageInfo packageInfo : packages) {
// 判断系统/非系统应用
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) // 非系统应用
{
Log.d(TAG,"uninstall, packageInfo=" + packageInfo.packageName);
rmApp(packageInfo.packageName,pm);
} else {
// 系统应用
}
}
}
private void rmApp(String packageName,PackageManager pm){
pm.deletePackage(packageName, new MyPackageDeleteObserver(), 0);
}
/** 静默卸载回调 */
class MyPackageDeleteObserver extends IPackageDeleteObserver.Stub {
@Override
public void packageDeleted(String packageName, int returnCode) {
if (returnCode == 1) {
Log.d(TAG,"uninstall successfully..."+packageName);
}else{
Log.d(TAG,"uninstall fialed...returnCode:"+returnCode+" packageName"+packageName);
}
}
}