From c48707d1d906bd54aaa2d833550ad5b256f6203a Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Fri, 12 Feb 2021 11:57:57 +0530 Subject: [PATCH 1/4] Working on Microg uninstallation support --- .../applications/appinfo/AppInfoDashboardFragment.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index 9917d352e8d..40479a61e5f 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -388,6 +388,10 @@ public class AppInfoDashboardFragment extends DashboardFragment super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_UNINSTALL) { // Refresh option menu + if (data.getStringExtra("packageName")!=null) { + Log.e("MicroGPackageName:: ", "inside"); + Log.e("MicroGPackageName:: ", data.getStringExtra("packageName")); + } getActivity().invalidateOptionsMenu(); } if (mAppButtonsPreferenceController != null) { @@ -479,6 +483,7 @@ public class AppInfoDashboardFragment extends DashboardFragment final Uri packageURI = Uri.parse("package:" + packageName); final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI); uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers); + uninstallIntent.putExtra("packageName", packageName); mMetricsFeatureProvider.action( getContext(), SettingsEnums.ACTION_SETTINGS_UNINSTALL_APP); startActivityForResult(uninstallIntent, REQUEST_UNINSTALL); -- GitLab From 00449e5cb298424392d3f668b348d0a99a47bd1f Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Fri, 12 Feb 2021 13:57:35 +0530 Subject: [PATCH 2/4] Implemented the code for send broadcast --- .../appinfo/AppInfoDashboardFragment.java | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index 40479a61e5f..f06bf9e2a9d 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -21,7 +21,9 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; +import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -29,6 +31,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.net.Uri; import android.os.Bundle; @@ -388,10 +391,14 @@ public class AppInfoDashboardFragment extends DashboardFragment super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_UNINSTALL) { // Refresh option menu - if (data.getStringExtra("packageName")!=null) { - Log.e("MicroGPackageName:: ", "inside"); - Log.e("MicroGPackageName:: ", data.getStringExtra("packageName")); - } + Log.e("MicroGPackageName:: ", mAppEntry.info.packageName); + if (mAppEntry.info.packageName.equals("com.google.android.gms")){ + Intent broadcastIntent = new Intent(); + broadcastIntent.setAction("foundation.e.apps.debugg"); + broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + getActivity().sendImplicitBroadcast(getActivity(),broadcastIntent,"foundation.e.apps.debugg"); + } + getActivity().invalidateOptionsMenu(); } if (mAppButtonsPreferenceController != null) { @@ -399,6 +406,28 @@ public class AppInfoDashboardFragment extends DashboardFragment } } + private void sendImplicitBroadcast(Context ctxt, Intent intent,String application) { + try { + PackageManager pm = ctxt.getPackageManager(); + List matches = pm.queryBroadcastReceivers(intent, 0); + + for (ResolveInfo resolveInfo : matches) { + Intent explicit = new Intent(intent); + if (resolveInfo.activityInfo.packageName.equals(application)) { + ComponentName cn = new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName, + resolveInfo.activityInfo.name); + explicit.setComponent(cn); + ctxt.sendBroadcast(explicit); + break; + } + + + } + }catch (ActivityNotFoundException e){ + e.printStackTrace(); + } + } + @Override public void handleDialogClick(int id) { if (mAppButtonsPreferenceController != null) { -- GitLab From 577cec6effb2d314c79c7654d700f13dda0c0ee7 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Fri, 12 Feb 2021 14:26:32 +0530 Subject: [PATCH 3/4] Implemented the code for send broadcast --- .../settings/applications/appinfo/AppInfoDashboardFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index f06bf9e2a9d..ad30a273ad8 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -396,7 +396,7 @@ public class AppInfoDashboardFragment extends DashboardFragment Intent broadcastIntent = new Intent(); broadcastIntent.setAction("foundation.e.apps.debugg"); broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); - getActivity().sendImplicitBroadcast(getActivity(),broadcastIntent,"foundation.e.apps.debugg"); + sendImplicitBroadcast(getActivity(),broadcastIntent,"foundation.e.apps.debugg"); } getActivity().invalidateOptionsMenu(); -- GitLab From 3f6b03d7097cec0c0d4a3998778dcdb381d0e460 Mon Sep 17 00:00:00 2001 From: Mohit Mali Date: Fri, 12 Feb 2021 16:51:08 +0530 Subject: [PATCH 4/4] Implemented the code for send broadcast q --- .../applications/appinfo/AppInfoDashboardFragment.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index ad30a273ad8..f4e7abb9a9b 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -391,12 +391,11 @@ public class AppInfoDashboardFragment extends DashboardFragment super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_UNINSTALL) { // Refresh option menu - Log.e("MicroGPackageName:: ", mAppEntry.info.packageName); if (mAppEntry.info.packageName.equals("com.google.android.gms")){ Intent broadcastIntent = new Intent(); - broadcastIntent.setAction("foundation.e.apps.debugg"); + broadcastIntent.setAction("foundation.e.apps"); broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); - sendImplicitBroadcast(getActivity(),broadcastIntent,"foundation.e.apps.debugg"); + sendImplicitBroadcast(getActivity(),broadcastIntent,"foundation.e.apps"); } getActivity().invalidateOptionsMenu(); -- GitLab