Tôi gặp sự cố khi truy xuất các giá trị (trên thiết bị Android 9.0) từ Tùy chọn được chia sẻ sau khi tôi cài đặt lại Ứng dụng và trong khi có allowBackup = true.
<manifest ... >
...
<application android:allowBackup="true" ... >
...
</application>
</manifest>
Theo đó: https://developer.android.com/guide/topics/data/autobackup
Các sở thích chung nên được khôi phục?
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();
- Tôi đã đăng nhập vào tài khoản Gmail của mình trên điện thoại (trình giả lập) (API 27) và khi đi tới Ứng dụng Drive, Sao lưu, Dữ liệu ứng dụng, tôi thấy 18 Ứng dụng như Youtube, Gmail, v.v. và cả Ứng dụng của riêng tôi.
- Khi tôi đi đến "Cài đặt> Hệ thống> Sao lưu", tôi thấy các Ứng dụng tương tự và Ứng dụng của riêng tôi. Tôi tải Ứng dụng, mã sharedprefs được thực thi. Tôi đóng Ứng dụng và xóa nó khỏi bộ nhớ. Và sau đó tôi nhấn nút "Sao lưu ngay":
Để xác minh tôi có thể thấy Ứng dụng của mình trong danh sách và nó đã được sao lưu 0 phút trước:
Sau đó, tôi gỡ bỏ và cài đặt lại Ứng dụng và hy vọng 2 giá trị (Elena và 12) sẽ ở đó. Nhưng họ đã bị xóa ...
Tôi cũng đã thử tương tự thông qua dòng lệnh, nhưng cũng không hoạt động: 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
- Gỡ bỏ ứng dụng
- Cài đặt lại ứng dụng và kiểm tra xem các giá trị SharedPreferences có còn không.
- Giá trị không còn nữa ...
Hành vi dường như cũng khác nhau trên các thiết bị Samsung với Samsung Cloud, nhưng bây giờ hãy tập trung vào chứng khoán Android.
CẬP NHẬT:
Nó không hoạt động nữa vì tôi đã hạ cấp phiên bản trong build.gradle:
build.gradle:
versionCode 70
versionName "1.6.1"
Ngay cả với android:restoreAnyVersion="true"
trong AndroidManifest
nó sẽ chỉ làm việc khi phiên bản không được hạ cấp.