Chipppppppppp / LIME

Adkiller for LINE
MIT License
446 stars 29 forks source link

LSPatch 時のトークのバックアップ/復元機能の実装 #195

Open areteruhiro opened 1 month ago

areteruhiro commented 1 month ago

確認項目


説明

areteruhiro commented 1 month ago

コードの修正がまだ出来ていません、

areteruhiro commented 1 month ago

これ以下の仕様(一度アプリを削除するとリストアするために、上書きしなければいけない)があるんですけど、このままで大丈夫ですか? https://github.com/areteruhiro/LIME-beta-hiro/releases/tag/v1.10.3

s1204IT commented 1 month ago

今月中にもう少し詳細な検証を行いますね。

僕の技術で無理なら諦めて一旦このまま実装します。

areteruhiro commented 1 month ago

エラー的には権限がないよ!って言われる感じなんですよね

areteruhiro commented 3 weeks ago

改善策みつかりそうですか? 一旦コード、修正しておきますね

s1204IT commented 2 weeks ago

ちょっと調べたけど分かんなかったです。

areteruhiro commented 1 week ago

これ、難しいですが解決方法思い浮かびました。 limeにファイル権限を与える →SharedPreferencesにファイルデータを保存する

XSharedPreferencesで、lineに渡す

areteruhiro commented 1 week ago

public void saveFileToSharedPreferences(Context context, String filePath, String key) throws IOException {

File file = new File(filePath);
byte[] fileBytes = Files.readAllBytes(file.toPath());

String encoded = Base64.encodeToString(fileBytes, Base64.DEFAULT);

SharedPreferences sharedPreferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, encoded);
editor.apply();

}

public void loadFileFromSharedPreferences(Context context, String key, String outputPath) throws IOException { // SharedPreferences から取得 SharedPreferences sharedPreferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); String encoded = sharedPreferences.getString(key, null);

if (encoded != null) {
    // Base64デコード
    byte[] fileBytes = Base64.decode(encoded, Base64.DEFAULT);

    // ファイルとして保存
    File outputFile = new File(outputPath);
    try (FileOutputStream fos = new FileOutputStream(outputFile)) {
        fos.write(fileBytes);
    }
}

}