Loading core/java/android/adb/ADBRootService.java +39 −6 Original line number Original line Diff line number Diff line Loading @@ -17,10 +17,11 @@ package android.adb; package android.adb; import android.adbroot.IADBRootService; import android.adbroot.IADBRootService; import android.annotation.SystemApi; import android.content.Context; import android.content.Context; import android.os.IBinder; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.util.Slog; /** /** * {@hide} * {@hide} Loading @@ -30,18 +31,43 @@ public class ADBRootService { private static final String ADB_ROOT_SERVICE = "adbroot_service"; private static final String ADB_ROOT_SERVICE = "adbroot_service"; private IADBRootService mADBRootService; private IADBRootService mService; private Context mContext; private Context mContext; private final IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { @Override public void binderDied() { if (mService != null) { mService.asBinder().unlinkToDeath(this, 0); } mService = null; } }; /** /** * Creates a new instance. * Creates a new instance. */ */ public ADBRootService(Context context) { public ADBRootService(Context context) { mADBRootService = IADBRootService.Stub.asInterface( ServiceManager.getService(ADB_ROOT_SERVICE)); mContext = context; mContext = context; } } private synchronized IADBRootService getService() throws RemoteException { if (mService != null) { return mService; } final IBinder service = ServiceManager.getService(ADB_ROOT_SERVICE); if (service != null) { service.linkToDeath(mDeathRecipient, 0); mService = IADBRootService.Stub.asInterface(service); return mService; } Slog.e(TAG, "Unable to acquire ADBRootService"); return null; } /** /** * @hide * @hide */ */ Loading @@ -49,7 +75,10 @@ public class ADBRootService { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.ADBROOT, "adbroot"); android.Manifest.permission.ADBROOT, "adbroot"); try { try { mADBRootService.setEnabled(enable); final IADBRootService svc = getService(); if (svc != null) { svc.setEnabled(enable); } } catch (RemoteException e) { } catch (RemoteException e) { throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer(); } } Loading @@ -62,9 +91,13 @@ public class ADBRootService { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.ADBROOT, "adbroot"); android.Manifest.permission.ADBROOT, "adbroot"); try { try { return mADBRootService.getEnabled(); final IADBRootService svc = getService(); if (svc != null) { return svc.getEnabled(); } } catch (RemoteException e) { } catch (RemoteException e) { throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer(); } } return false; } } } } Loading
core/java/android/adb/ADBRootService.java +39 −6 Original line number Original line Diff line number Diff line Loading @@ -17,10 +17,11 @@ package android.adb; package android.adb; import android.adbroot.IADBRootService; import android.adbroot.IADBRootService; import android.annotation.SystemApi; import android.content.Context; import android.content.Context; import android.os.IBinder; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.util.Slog; /** /** * {@hide} * {@hide} Loading @@ -30,18 +31,43 @@ public class ADBRootService { private static final String ADB_ROOT_SERVICE = "adbroot_service"; private static final String ADB_ROOT_SERVICE = "adbroot_service"; private IADBRootService mADBRootService; private IADBRootService mService; private Context mContext; private Context mContext; private final IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { @Override public void binderDied() { if (mService != null) { mService.asBinder().unlinkToDeath(this, 0); } mService = null; } }; /** /** * Creates a new instance. * Creates a new instance. */ */ public ADBRootService(Context context) { public ADBRootService(Context context) { mADBRootService = IADBRootService.Stub.asInterface( ServiceManager.getService(ADB_ROOT_SERVICE)); mContext = context; mContext = context; } } private synchronized IADBRootService getService() throws RemoteException { if (mService != null) { return mService; } final IBinder service = ServiceManager.getService(ADB_ROOT_SERVICE); if (service != null) { service.linkToDeath(mDeathRecipient, 0); mService = IADBRootService.Stub.asInterface(service); return mService; } Slog.e(TAG, "Unable to acquire ADBRootService"); return null; } /** /** * @hide * @hide */ */ Loading @@ -49,7 +75,10 @@ public class ADBRootService { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.ADBROOT, "adbroot"); android.Manifest.permission.ADBROOT, "adbroot"); try { try { mADBRootService.setEnabled(enable); final IADBRootService svc = getService(); if (svc != null) { svc.setEnabled(enable); } } catch (RemoteException e) { } catch (RemoteException e) { throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer(); } } Loading @@ -62,9 +91,13 @@ public class ADBRootService { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.ADBROOT, "adbroot"); android.Manifest.permission.ADBROOT, "adbroot"); try { try { return mADBRootService.getEnabled(); final IADBRootService svc = getService(); if (svc != null) { return svc.getEnabled(); } } catch (RemoteException e) { } catch (RemoteException e) { throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer(); } } return false; } } } }