Android アプリケーションを作成しました。これは非市場アプリケーションであり、一連の顧客に展開されます。MobiControl を使用して、アプリケーションの新しい更新を送信します。更新はサイレントに行われます。
更新時に、アプリケーションが使用中で、ユーザーがデータを入力している場合、アプリケーションはユーザーの確認を待たずに閉じられます!!、ユーザーはアプリケーションの新しいバージョンにアップグレードされ、再起動されます。このユーザーのため、変更が失われます!! また、アプリケーションは機密情報を扱うため、デバイスの物理ストレージに書き込むことはできません。したがって、「保持して復元する」という選択肢はありません。
私が考えた1つのアイデアは、アプリケーションの画面の1つ(設定など)に「更新」ボタンを提供して、そこから新しいバージョンに更新できるようにすることです。そのために、APK をパラメータとして渡した後にインストール インテントを表示できる次のコードを取得しました。
Intent promptInstall = new Intent(Intent.ACTION_VIEW)
.setData(Uri.parse("file:///path/to/myapp.apk"))
.setType("application/vnd.android.package-archive");
startActivity(promptInstall);
しかし、上記のコードを実行すると、次のエラーが発生します。
06-21 18:29:01.666: E/AndroidRuntime(8981): Caused by: android.content.ActivityNotFoundException:
No Activity found to handle Intent { act=android.intent.action.VIEW typ=application/vnd.android.package-archive }
昨日、setDataAndType を 1 行で呼び出したときに機能しました。しかし、今日、同じコードで同じ問題に再び直面しました...
06-25 10:27:39.383: E/AndroidRuntime(3737): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/test/ReinstallSample.apk typ=application/vnd.android.package-archive }
06-25 10:27:39.383: E/AndroidRuntime(3737): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
06-25 10:27:39.383: E/AndroidRuntime(3737): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
06-25 10:27:39.383: E/AndroidRuntime(3737): at android.app.Activity.startActivityForResult(Activity.java:3370)
06-25 10:27:39.383: E/AndroidRuntime(3737): at android.app.Activity.startActivityForResult(Activity.java:3331)
06-25 10:27:39.383: E/AndroidRuntime(3737): at android.app.Activity.startActivity(Activity.java:3566)
06-25 10:27:39.383: E/AndroidRuntime(3737): at android.app.Activity.startActivity(Activity.java:3534)
06-25 10:27:39.383: E/AndroidRuntime(3737): at com.example.reinstallsample.MainActivity.launchInstaller(MainActivity.java:73)
06-25 10:27:39.383: E/AndroidRuntime(3737): at com.example.reinstallsample.MainActivity.reInstall(MainActivity.java:66)
06-25 10:27:39.383: E/AndroidRuntime(3737): ... 14 more