'Uninstalling packages silently in Android PackageInstaller doesn't work
I'm using PackageInstaller in Android 6.0.1 to uninstall packages silently but it's not working.
This is my code:
AndroidManifest.xml
<uses-permission android:name="android.permission.DELETE_PACKAGE" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
MainActivity.java
public boolean uninstallPackage(Context context, String packageName) {
if (isPackageExisted(packageName) {
say("Package is exists.");
} else {
say("Package is not found or not exists!");
return false;
}
ComponentName name = new ComponentName(this, AdminReceiver.class.getCanonicalName());
PackageManager packageManger = context.getPackageManager();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
PackageInstaller packageInstaller = packageManger.getPackageInstaller();
PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
PackageInstaller.SessionParams.MODE_FULL_INSTALL);
params.setAppPackageName(packageName);
int sessionId = 0;
try {
sessionId = packageInstaller.createSession(params);
} catch (Exception e) {
say(e.toString());
return false;
}
packageInstaller.uninstall(packageName, PendingIntent.getBroadcast(context, sessionId,
new Intent("android.intent.action.MAIN"), 0).getIntentSender());
return true;
}
say("Old SDK");
return false;
}
public boolean isPackageExisted(String targetPackage) {
PackageManager pm = getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
return true;
}
private void say(Object text) {
android.widget.Toast.makeText(this, String.valueOf(text), 0).show();
}
AdminReceiver.java
package com.example.deviceadmin;
import android.app.admin.DeviceAdminReceiver;
import android.content.Intent;
import android.content.Context;
import android.widget.Toast;
public class AdminReceiver extends DeviceAdminReceiver
{
@Override
public void onEnabled(Context context, Intent intent)
{
Toast.makeText(context, "Device Admin is Enabled", 0).show();
}
@Override
public void onDisabled(Context context, Intent intent)
{
Toast.makeText(context, "Device Admin is Disabled", 0).show();
}
}
I've tried this code, there is no error and when I click Uninstall just say Uninstalling and nothing happened. I've enabled DeviceAdmin to the application too.
and I have another questions like:
Can I uninstall my app using packageinstaller or I can just uninstall other apps?
What exacly I need for this process? (uninstall packages using packageinstaller)
If you have any questions ask me, hope I found solution.
With my sincere appreciation.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
