1

APK の更新を送信したいのですが、データベースを変更するとアプリがクラッシュします。

そのため、ユーザーはアンインストールしてから再インストールする必要があります。これが自動的に行われるようにapkを展開する方法はありますか?

または、以前のインストールのアプリ データを消去します。

4

4 に答える 4

2

メソッドを提供してからSQLをonUpgrade()実行できます。http: //developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.htmlを参照してください。これには、データベースのバージョン番号を変更して、次の場合に検出できるようにする必要があります。アプリが起動します。スキーマが実際に異なり、既存のデータを保存する場合は、データを一時テーブルにコピーし、スキーマを削除して作成し、再度コピーする必要があります。alter table

于 2012-04-08T19:04:19.847 に答える
0

同様の問題がありました。私の場合、アプリはアセットからデータベースをロードしましたが、データベースをアップグレードしても変更されませんでした。それを解決するために私がしたことは、データベースファイル名(アセットフォルダー内)を変更することであり、別のデータベースを作成した場合と同じように完全に機能しました。それを修正する最善の方法ではありませんが、問題は解決します。

于 2012-04-23T16:05:50.413 に答える
0

他の回答が示したように、完璧なユーザーエクスペリエンスのために onUpate() メソッドを上書きする必要があります。再インストールとクリーンアップはうまくいっています...私にとっては1980年スタイルのようなものであり、Androidの設計方法は、サポートされていることに疑いの余地はありません.

したがって、元の質問に答えるには、いいえ、別のアプリケーションを介してアプリケーションを管理することはできないと思います。このタスクを実行する方法についての私の知識の欠如は証拠ではありませんが、それは基礎となる構造の問題だと思います.

Android は UNIX ベースのシステムであり、すべてのアプリケーションはこのシステムにユーザーとして登録されます。この環境ではユーザー権限が非常に適切に設定されているため、別のユーザー (アプリケーション) が他のアプリケーションのデータに簡単にアクセスできないため、コードを挿入/ハイジャック/最適化できません。例外は、SD カードなどの外部ストレージなどです。ここでは、適切な権限を持つすべてのアプリケーションが好きなようにトロールできます。

ただし、実際のシステムに戻ると、アプリケーションに外部パッケージへのアクセスを許可する方法がいくつかあります。しかし、私が読んだ限りでは、特定の情報と設定を共有するように設計されているようです。そこにアンインストールルーチンが見つかるとは思えません。

終了する直前に、新しいアプリケーションが古いバージョンに自分自身を削除するように要求し、それが行われない限り起動しないようにするという考えについて考えました。このアプローチの詳細については、こちらを参照してください。 Androidでパッケージをプログラムでアンインストールすることは可能ですか?

それにもかかわらず、システムが設計された方法であるため、onUpdate() ソリューションもお勧めします。したがって、ユーザーのエクスペリエンスははるかに満足のいくものになり、複雑さが軽減されます。

于 2012-04-08T19:26:43.967 に答える
0

「新着情報」セクションで提供された指示を無視したり読まなかったりする人はいません。これを自動的に行うことはできません。

アプリ内でデータベースを適切にアップグレードする必要があります。OpenHelper クラスは、これを行うために必要なすべての機能を提供します。

http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

于 2012-04-08T19:01:45.190 に答える