アプリは市場にリリースされないため、私のアプリは自動アップグレード機能を実装しています。apkファイルはウェブサーバーでホストされています。次のリンクのパート1を実装しました
AsyncTaskを使用して、ダウンロードの進行状況をダイアログに表示します
アプリケーションを実行すると、次のことが発生します。
新しいバージョンが利用可能な場合、アプリケーションはユーザーにアップグレードするかどうかを尋ねます。
ユーザーが[はい]を選択すると、アプリケーションはサーバーからファイルをダウンロードします。
- アプリが完了すると、ユーザーがアプリを置き換えるかどうかを確認するメッセージが表示されます
- ユーザーが[OK]をクリックすると、アプリケーションのインストールが開始されますが、次の画面で失敗します
これが発生する理由に関するログファイル情報は提供されていません。誰かがこの問題の原因を理解するのを手伝ってくれませんか。これは、私のコードではなく、fianl2画面を生成するためのデフォルトのAndroidコードです。
これは、非同期タスクで次のコードが実行された後に発生します。
protected void onPostExecute(String result) {
super.onPostExecute(result);
// dismiss the progress dialog
mProgressDialog.dismiss();
// get the file
String path = getFilesDir().getAbsolutePath()+ File.separator + getString(R.string.apk_file);
File file = new File(path);
// if it exists
if(file.exists()) {
// create and start the intent with the new file
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
} else {
// display error message
Toast.makeText(context, "File was not downloaded", Toast.LENGTH_LONG).show();
}
}
アプリをアンインストールし、ブラウザーを使用してファイルの場所に移動すると、アプリは自動的にダウンロードされ、ダウンロードフォルダーから正常にインストールできます。
これは、アプリが現在実行されているときにアプリが自分自身をインストールしようとしている問題でしょうか?ユーザーのデバイスにSDカードが存在することを保証できないため、ファイルはアップグレードプロセス中に内部メモリにダウンロードされ、SDカードの場所にはダウンロードされません。