Loading src/com/android/settings/security/CredentialManagementAppButtonsController.java +18 −29 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -29,6 +26,7 @@ import android.security.KeyChain; import android.stats.devicepolicy.DevicePolicyEnums; import android.util.Log; import androidx.fragment.app.Fragment; import androidx.preference.PreferenceScreen; import com.android.settings.R; Loading @@ -48,16 +46,15 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont 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 Loading @@ -73,7 +70,6 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont 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"); } Loading @@ -91,11 +87,6 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont } 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(); Loading @@ -103,12 +94,10 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont 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"); } }); } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Unable to remove the credential management app"); } } } src/com/android/settings/security/CredentialManagementAppFragment.java +7 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -47,6 +48,12 @@ public class CredentialManagementAppFragment extends DashboardFragment { 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); } Loading
src/com/android/settings/security/CredentialManagementAppButtonsController.java +18 −29 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -29,6 +26,7 @@ import android.security.KeyChain; import android.stats.devicepolicy.DevicePolicyEnums; import android.util.Log; import androidx.fragment.app.Fragment; import androidx.preference.PreferenceScreen; import com.android.settings.R; Loading @@ -48,16 +46,15 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont 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 Loading @@ -73,7 +70,6 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont 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"); } Loading @@ -91,11 +87,6 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont } 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(); Loading @@ -103,12 +94,10 @@ public class CredentialManagementAppButtonsController extends BasePreferenceCont 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"); } }); } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Unable to remove the credential management app"); } } }
src/com/android/settings/security/CredentialManagementAppFragment.java +7 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -47,6 +48,12 @@ public class CredentialManagementAppFragment extends DashboardFragment { 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); }