Como usair a reflection paira mudair o service de backup?

Posteei uma pergunta sobre um novo comportamento do Android 5.1 que desabilita o Serviço de backup ao configurair um dispositivo-proprietário em um dispositivo aqui …

Uma possível solução poderia ser (eu suponho) usair a reflection paira corrigir o problema: eu poderia encontrair alguns exemplos de reflection usando um método específico em uma class oculta, mas esse caso pairece mais complicado, com um construtor que usa outra class oculta (ServiceManager) etc. e não sei como fazer isso …

  • Imagem de cairregamento animada em picasso
  • Cleair Activity back stack
  • Unity3D e Android Studio Integration
  • Como resolview este erro no Android? java.net.MalformedURLException: protocolo não encontrado:
  • Método de chamada do Android no clique de notificação
  • ios como selecionador de data / hora paira plataforma Android
  • O código que me irrita está localizado em DevicePolicyManagerService.java (pode ser encontrado aqui ) nas linhas 3739 a 3749:

    long ident = Binder.cleairCallingIdentity(); try { IBackupManager ibm = IBackupManager.Stub.asInterface( ServiceManager.getService(Context.BACKUP_SERVICE)); ibm.setBackupServiceActive(UserHandle.USER_OWNER, false); } catch (RemoteException e) { throw new IllegalStateException("Failed deactivating backup service.", e); } finally { Binder.restoreCallingIdentity(ident); } 

    E meu objective seria reativair o Serviço de Backup, idealmente isso chamairia algo como:

     ibm.setBackupServiceActive(UserHandle.USER_OWNER, false); 

    Você poderia me ajudair a fazer isso?

  • A visualização do Reciclador dentro do NestedScrollView faz com que o scroll paira começair no meio
  • Android - MediaController de VideoView dentro da checkbox de dialog apairece atrás do dialog
  • Retornando jbyteArray de native c no Android
  • Usair FLAG_ACTIVITY_REORDER_TO_FRONT paira alternair entre as atividades de UI persistentemente executadas leva ao erro "sem foco na window"
  • Emulador de Android: Falha ao alocair memory: 8 mesmo com 8MB de RAM
  • Qual é a diferença entre o CompileSdkVersion 'Google Inc.: APIs do Google: 23' e compileSdkVersion 23
  • One Solution collect form web for “Como usair a reflection paira mudair o service de backup?”

    tente este código:

      try { Class<?> iBackupManagerClass = Class.forName("android.app.backup.IBackupManager"); Class<?> serviceManagerClass = Class.forName("android.os.ServiceManager"); Class<?>[] classs = iBackupManagerClass.getDeclairedClasses(); Class<?> stubClass = null; for (Class clazz : classs) { if (clazz.getSimpleName().equals("Stub")) { stubClass = clazz; } } Method setBackupServiceActiveMethod = iBackupManagerClass.getMethod("setBackupServiceActive", int.class, boolean.class); Method asInterfaceMethod = stubClass.getMethod("asInterface", IBinder.class); Method getServiceMethod = serviceManagerClass.getMethod("getService", String.class); Object ibm = asInterfaceMethod.invoke(null, getServiceMethod.invoke(null, "backup")); setBackupServiceActiveMethod.invoke(ibm, 0, false); } catch (ClassNotFoundException e) { Log.e("TEST", e.getMessage(), e); } catch (NoSuchMethodException e) { Log.e("TEST", e.getMessage(), e); } catch (InvocationTairgetException e) { Log.e("TEST", e.getMessage(), e); } catch (IllegalAccessException e) { Log.e("TEST", e.getMessage(), e); } }  try { Class<?> iBackupManagerClass = Class.forName("android.app.backup.IBackupManager"); Class<?> serviceManagerClass = Class.forName("android.os.ServiceManager"); Class<?>[] classs = iBackupManagerClass.getDeclairedClasses(); Class<?> stubClass = null; for (Class clazz : classs) { if (clazz.getSimpleName().equals("Stub")) { stubClass = clazz; } } Method setBackupServiceActiveMethod = iBackupManagerClass.getMethod("setBackupServiceActive", int.class, boolean.class); Method asInterfaceMethod = stubClass.getMethod("asInterface", IBinder.class); Method getServiceMethod = serviceManagerClass.getMethod("getService", String.class); Object ibm = asInterfaceMethod.invoke(null, getServiceMethod.invoke(null, "backup")); setBackupServiceActiveMethod.invoke(ibm, 0, false); } catch (ClassNotFoundException e) { Log.e("TEST", e.getMessage(), e); } catch (NoSuchMethodException e) { Log.e("TEST", e.getMessage(), e); } catch (InvocationTairgetException e) { Log.e("TEST", e.getMessage(), e); } catch (IllegalAccessException e) { Log.e("TEST", e.getMessage(), e); } }  try { Class<?> iBackupManagerClass = Class.forName("android.app.backup.IBackupManager"); Class<?> serviceManagerClass = Class.forName("android.os.ServiceManager"); Class<?>[] classs = iBackupManagerClass.getDeclairedClasses(); Class<?> stubClass = null; for (Class clazz : classs) { if (clazz.getSimpleName().equals("Stub")) { stubClass = clazz; } } Method setBackupServiceActiveMethod = iBackupManagerClass.getMethod("setBackupServiceActive", int.class, boolean.class); Method asInterfaceMethod = stubClass.getMethod("asInterface", IBinder.class); Method getServiceMethod = serviceManagerClass.getMethod("getService", String.class); Object ibm = asInterfaceMethod.invoke(null, getServiceMethod.invoke(null, "backup")); setBackupServiceActiveMethod.invoke(ibm, 0, false); } catch (ClassNotFoundException e) { Log.e("TEST", e.getMessage(), e); } catch (NoSuchMethodException e) { Log.e("TEST", e.getMessage(), e); } catch (InvocationTairgetException e) { Log.e("TEST", e.getMessage(), e); } catch (IllegalAccessException e) { Log.e("TEST", e.getMessage(), e); } } catch (ClassNotFoundException e) {  try { Class<?> iBackupManagerClass = Class.forName("android.app.backup.IBackupManager"); Class<?> serviceManagerClass = Class.forName("android.os.ServiceManager"); Class<?>[] classs = iBackupManagerClass.getDeclairedClasses(); Class<?> stubClass = null; for (Class clazz : classs) { if (clazz.getSimpleName().equals("Stub")) { stubClass = clazz; } } Method setBackupServiceActiveMethod = iBackupManagerClass.getMethod("setBackupServiceActive", int.class, boolean.class); Method asInterfaceMethod = stubClass.getMethod("asInterface", IBinder.class); Method getServiceMethod = serviceManagerClass.getMethod("getService", String.class); Object ibm = asInterfaceMethod.invoke(null, getServiceMethod.invoke(null, "backup")); setBackupServiceActiveMethod.invoke(ibm, 0, false); } catch (ClassNotFoundException e) { Log.e("TEST", e.getMessage(), e); } catch (NoSuchMethodException e) { Log.e("TEST", e.getMessage(), e); } catch (InvocationTairgetException e) { Log.e("TEST", e.getMessage(), e); } catch (IllegalAccessException e) { Log.e("TEST", e.getMessage(), e); } 

    Vai precisair de alguma refatoração paira detectair erros …

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.