traducir studio fullbackupcontent developer data allow android sharedpreferences backup

android - studio - No se está llamando a BackUpAgentHelperClass



backup user data traducir (5)

Asegúrate de llamar

adb shell bmgr run

para simular la copia de seguridad.

También intente utilizar el transporte local para realizar copias de seguridad en cualquier momento:

adb shell bmgr transport android/com.android.internal.backup.LocalTransport

Quiero hacer una copia de seguridad de los datos en Android usando la clase MyBackUpAgent que extiende BackupAgentHelper. Estoy usando SharedPreferences para almacenar datos.

Mi código de actividad principal es:

public class MainActivity extends Activity { EditText inputtext; TextView outputtext; Button submit; public static SharedPreferences sharedprefs; static final String File_Name_Of_Prefrences ="godplay_preferences"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); init(); sharedprefs=getSharedPreferences(File_Name_Of_Prefrences,MODE_PRIVATE); System.out.println("value="+sharedprefs.getString("Input","")); outputtext.setText(sharedprefs.getString("Input","")); submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub populateUI(); } }); } public void populateUI() { String savedinput=inputtext.getText().toString(); System.out.println("savedinput="+savedinput); outputtext.setText(savedinput); sharedprefs=getSharedPreferences(File_Name_Of_Prefrences,MODE_PRIVATE); Editor editor=sharedprefs.edit(); editor.putString("Input",inputtext.getText().toString()); editor.commit(); requestBackup(); } private void init() throws ClassCastException { inputtext=(EditText) findViewById(R.id.edtInputText); outputtext=(TextView) findViewById(R.id.txtOutputText); submit=(Button) findViewById(R.id.btnSubmit); } public void requestBackup() { BackupManager bm = new BackupManager(getApplicationContext()); bm.dataChanged(); } }

Mi clase MyBackUpAgent:

public class MyBackUpAgent extends BackupAgentHelper{ static final String PREFS_BACKUP_KEY = "backup"; String key_string="Hello World"; @Override public void onCreate() { System.out.println("********************"); SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this,MainActivity.File_Name_Of_Prefrences); addHelper(PREFS_BACKUP_KEY, helper); } }

Mi archivo mainfest.xml:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.godplay" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:restoreAnyVersion="false" android:backupAgent=".MyBackUpAgent" android:theme="@style/AppTheme" > <activity android:name="com.example.godplay.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIhjloadYCTPUNo3yPsSX6LKmziiumZiQVlEEdBA" /> </application> </manifest>

Hasta ahora he probado con la herramienta bmgr para probar, se está ejecutando correctamente con la herramienta bmgr. Sin embargo, en las pruebas en el dispositivo y emulador de Android, la copia de seguridad no se realiza ni se restaura.

Además, he probado esto en Android 5.1, Android 4.2 y Android 4.0, pero todavía no tengo suerte.

Me parece que a mi clase MyBackUpAgent nunca se la llama, y ​​he intentado puntos de interrupción en MyBackUpAgent Class y la he validado. Nunca es golpeado.

¿Qué estoy haciendo mal?


En su archivo AndroidManifest.xml, intente cambiar

android:backupAgent=".MyBackUpAgent"

con el nombre completo de la clase, es decir,

android:backupAgent="com.abh.utils.MyBackUpAgent"

pero, por supuesto, cambiar "com.abh.utils" con el nombre del paquete MyBackUpAgent.java está en.


Los documentos mencionan las condiciones para el calendario de copia de seguridad:

  • El usuario ha habilitado la copia de seguridad en el dispositivo en Configuración> Copia de seguridad y reinicio.
  • Han transcurrido al menos 24 horas desde la última copia de seguridad.
  • El dispositivo está inactivo y cargando.
  • El dispositivo está conectado a una red wifi. Si el dispositivo nunca está conectado a una red wifi, la Copia de seguridad automática nunca se produce.

Si la copia de seguridad funciona para usted con la herramienta bmgr pero no en un dispositivo / emulador real, es posible que no cumpla con todas estas condiciones, por lo tanto, la copia de seguridad nunca se realizará.



Tuve un problema similar y he buscado por todas partes sin suerte. Finalmente encontré la solución. Parece que el Agente de copia de seguridad debe estar en el paquete superior sin un punto anterior. Así que intenta cambiar:

android:backupAgent=".MyBackUpAgent"

a

android:backupAgent="MyBackUpAgent"