Merge "Cred mng app settings - close onRemove" into sc-dev
diff --git a/src/com/android/settings/security/CredentialManagementAppButtonsController.java b/src/com/android/settings/security/CredentialManagementAppButtonsController.java
index c6afded..fe5e45b 100644
--- a/src/com/android/settings/security/CredentialManagementAppButtonsController.java
+++ b/src/com/android/settings/security/CredentialManagementAppButtonsController.java
@@ -16,11 +16,8 @@
package com.android.settings.security;
-import android.app.AppOpsManager;
import android.app.admin.DevicePolicyEventLogger;
import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
@@ -29,6 +26,7 @@
import android.stats.devicepolicy.DevicePolicyEnums;
import android.util.Log;
+import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
@@ -48,16 +46,15 @@
private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
private final Handler mHandler = new Handler(Looper.getMainLooper());
-
- private final PackageManager mPackageManager;
- private final AppOpsManager mAppOpsManager;
private boolean mHasCredentialManagerPackage;
- private String mCredentialManagerPackageName;
+ private Fragment mFragment;
public CredentialManagementAppButtonsController(Context context, String preferenceKey) {
super(context, preferenceKey);
- mPackageManager = context.getPackageManager();
- mAppOpsManager = context.getSystemService(AppOpsManager.class);
+ }
+
+ public void setParentFragment(Fragment fragment) {
+ mFragment = fragment;
}
@Override
@@ -73,7 +70,6 @@
try {
IKeyChainService service = KeyChain.bind(mContext).getService();
mHasCredentialManagerPackage = service.hasCredentialManagementApp();
- mCredentialManagerPackageName = service.getCredentialManagementAppPackageName();
} catch (InterruptedException | RemoteException e) {
Log.e(TAG, "Unable to display credential management app buttons");
}
@@ -91,24 +87,17 @@
}
private void removeCredentialManagementApp() {
- try {
- ApplicationInfo appInfo = mPackageManager.getApplicationInfo(
- mCredentialManagerPackageName, 0);
- mAppOpsManager.setMode(AppOpsManager.OP_MANAGE_CREDENTIALS,
- appInfo.uid, mCredentialManagerPackageName, AppOpsManager.MODE_DEFAULT);
- mExecutor.execute(() -> {
- try {
- IKeyChainService service = KeyChain.bind(mContext).getService();
- service.removeCredentialManagementApp();
- DevicePolicyEventLogger
- .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REMOVED)
- .write();
- } catch (InterruptedException | RemoteException e) {
- Log.e(TAG, "Unable to remove the credential management app");
- }
- });
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(TAG, "Unable to remove the credential management app");
- }
+ mExecutor.execute(() -> {
+ try {
+ IKeyChainService service = KeyChain.bind(mContext).getService();
+ service.removeCredentialManagementApp();
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REMOVED)
+ .write();
+ mFragment.getActivity().finish();
+ } catch (InterruptedException | RemoteException e) {
+ Log.e(TAG, "Unable to remove the credential management app");
+ }
+ });
}
}
diff --git a/src/com/android/settings/security/CredentialManagementAppFragment.java b/src/com/android/settings/security/CredentialManagementAppFragment.java
index 5544ee6..74ce003 100644
--- a/src/com/android/settings/security/CredentialManagementAppFragment.java
+++ b/src/com/android/settings/security/CredentialManagementAppFragment.java
@@ -17,6 +17,7 @@
package com.android.settings.security;
import android.app.settings.SettingsEnums;
+import android.content.Context;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -47,6 +48,12 @@
return SettingsEnums.CREDENTIAL_MANAGEMENT_APP;
}
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ use(CredentialManagementAppButtonsController.class).setParentFragment(this);
+ }
+
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.credential_management_app_fragment);
}