ฉันมีปัญหาในการเรียกคืนค่า (บนอุปกรณ์ Android 9.0) จากการตั้งค่าที่ใช้ร่วมกันหลังจากที่ฉันติดตั้งแอพอีกครั้งและในขณะที่มี allowBackup = true
<manifest ... >
...
<application android:allowBackup="true" ... >
...
</application>
</manifest>
ตามนี้: https://developer.android.com/guide/topics/data/autobackup
การตั้งค่าที่ใช้ร่วมกันควรคืนค่า?
SharedPreferences prefs = getSharedPreferences("TEST", MODE_PRIVATE);
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.
SharedPreferences.Editor editor = getSharedPreferences("TEST", MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.apply();
- ฉันลงชื่อเข้าใช้บัญชี Gmail ของฉันในโทรศัพท์ (อีมูเลเตอร์) (API 27) และเมื่อไปที่แอพ Drive, Backup, App-data ฉันเห็นแอพ 18 แอปเช่น Youtube, Gmail เป็นต้นและแอพของฉันเอง
- เมื่อฉันไปที่ "การตั้งค่า> ระบบ> การสำรองข้อมูล" ฉันเห็นแอพเดียวกันและแอพของฉันเอง ฉันโหลดแอพรหัสที่ใช้ร่วมกันจะถูกดำเนินการ ฉันปิดแอพและลบออกจากหน่วยความจำ จากนั้นฉันกดปุ่ม "สำรองข้อมูลตอนนี้":
ในการตรวจสอบฉันสามารถดูแอพของฉันในรายการและได้รับการสำรองข้อมูล 0 นาทีที่ผ่านมา:
จากนั้นฉันจะลบและติดตั้งแอพใหม่อีกครั้งและคาดหวังว่าจะมี 2 ค่า (Elena และ 12) แต่พวกเขาจะถูกลบ ...
ฉันยังลองเหมือนกันผ่านทางบรรทัดคำสั่ง แต่ก็ไม่ทำงาน: https://developer.android.com/guide/topics/data/testingbackup.html#Preparing
adb shell
dreamlte:/ $ bmgr enabled
Backup Manager currently enabled
dreamlte:/ $ bmgr list transports
android/com.android.internal.backup.LocalTransport
com.google.android.gms/.backup.migrate.service.D2dTransport
* com.google.android.gms/.backup.BackupTransportService
dreamlte:/ $ bmgr backupnow my.package.name
Running incremental backup for 1 requested packages.
Package @pm@ with result: Success
Package nl.dagelijkswoord.android with progress: 1536/309248
Package nl.dagelijkswoord.android with result: Success
Backup finished with result: Success
dreamlte:/ $ dumpsys backup
Backup Manager is enabled / provisioned / not pending init
Auto-restore is disabled
No backups running
Last backup pass started: 1573804513565 (now = 1573806675410)
next scheduled: 1573819001046
...
1573806051616 : my.package.name
dreamlte:/ $ bmgr restore 1573806051616 my.package.name
No matching restore set token. Available sets:
35e84268c94b7d9c : SM-G950F
3a8e32898034f8af : SM-G950F
3e2610c4ea45fb96 : Nexus 5X
done
dreamlte:/ $ bmgr restore 35e84268c94b7d9c my.package.name
Scheduling restore: SM-G950F
restoreStarting: 1 packages
onUpdate: 0 = my.package.name
restoreFinished: 0
done
- ลบแอพ
- ติดตั้งแอพอีกครั้งและตรวจสอบว่าค่า SharedPreferences ยังคงอยู่หรือไม่
- ค่าจะหายไป ...
พฤติกรรมนั้นดูเหมือนจะแตกต่างกันไปตามอุปกรณ์ Samsung ที่มี Samsung Cloud แต่ตอนนี้เรามามุ่งเน้นที่สต็อก Android
UPDATE:
มันไม่ทำงานอีกต่อไปเพราะฉันปรับลดรุ่นใน build.gradle:
build.gradle:
versionCode 70
versionName "1.6.1"
แม้จะandroid:restoreAnyVersion="true"
อยู่ในAndroidManifest
นั้นก็จะทำงานได้เฉพาะเมื่อรุ่นไม่ได้ลดระดับ