2

自動更新が発生すると、アプリの設定に保存されている古い日付が削除されます。
この削除を防ぐにはどうすればよいですか?
アプリの自動更新時に、保存された古いデータが削除されないようにしたい。

4

2 に答える 2

1

AndroidはSharedPreferenceを/data/ data / your package name/shared_prefsの下に保存します

通常、更新アプリケーションはsharedPreferenceを削除しません。

private void replaceNonSystemPackageLI(PackageParser.Package deletedPackage,
        PackageParser.Package pkg, int parseFlags, int scanMode, UserHandle user,
        String installerPackageName, PackageInstalledInfo res) {
    ...
    // First delete the existing package while retaining the data directory
    if (!deletePackageLI(pkgName, null, true, PackageManager.DELETE_KEEP_DATA,
            res.removedInfo, true)) {
        // If the existing package wasn't successfully deleted
        res.returnCode = PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE;
        deletedPkg = false;
    } else {
        ....
    }
    ....
}

以下を確認する必要があると思います。

  1. お使いのデバイスはルート化されたデバイスですか?ルート権限を取得されたデバイス上のアプリは、必要なものをすべて削除できます。

  2. その更新されたapkで別のパッケージ名を使用しましたか?

于 2013-03-12T13:40:51.270 に答える
1

これが良い解決策になるかどうかはわかりませんが、試すことができる提案にすぎません。

ステップ 1:データを変更 (追加/編集/削除) して永続的なストレージに保存するときはいつでも、次のいずれかを試すことができます。

 a. save the data in file in sd card
 b. store the data to your remote server or 
 c. store in internal memory of the phone. 

(ケース c の更新後に持続するかどうかはわかりません。参考までに、こちらを確認してください。

ステップ 2: IntentBroadcastReceiverをリッスンする aを作成します。ACTION_PACKAGE_REPLACEDそのため、アプリケーション パッケージがいつ更新されるかがわかります。データを保存したストレージからデータを再度読み込みます (1a/1b/1c のいずれか)。

注意: 彼の心配なしにユーザー データを保存するのは良いことではありません。

于 2013-03-12T12:58:00.247 に答える