私は非公開のAndroidアプリを持っていますが、GoogleマーケットやGoogleのプレイではありません。 apkファイルはプライベートWebサーバー上でホストされており、新しいバージョンがあるかどうかを確認するためにモバイルデバイスがPOST要求を行うことができるURLもあります。Android:Webサーバーでホストされているapkから自分のアプリを更新するには?
新しいバージョンがある場合は、「アップグレード」というボタンをユーザーに表示するだけです。オンクリックリスナーはこれを行います:
final View.OnClickListener upgradeButton_OnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = "https://example.com/android-app/app-release.apk";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
};
...これは理想的ではありません。 apkファイルがダウンロードされたボタンをクリックして、「インストールはい/いいえ」と表示されているアプリインストーラ画面が表示されたらいいですね。私はちょうどそれを行う方法を知らない。
私はインターネット上でこれを行う方法を探してきましたが、決定的な答えは見られませんでした。誰かが私にすべてのステップのチュートリアルを教えてもらえますか?私はおそらく、ほとんどの人がGoogleのマーケットやGoogleのプレーを利用していると知っていますが、私はそれをやっていないので、これを理解することは難しいです。
編集1 -----------------------------------------
今私はonclickのリスナーでこれを持っている:
final View.OnClickListener upgradeButton_OnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if(permissionCheck == PackageManager.PERMISSION_GRANTED){
DownloadManager.Request request = new DownloadManager.Request(Uri.parse("https://example.com/android-app/app-release.apk"));
request.setTitle("This App Upgrade.");
request.setDescription("File is being downloaded ...");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "app-release.apk");
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
manager.enqueue(request);
}
}
};
そして、この:
BroadcastReceiver onDownloadComplete = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
intent.setDataAndType(Uri.parse(Environment.DIRECTORY_DOWNLOADS + "app-release.apk"),
"application/vnd.android.package-archive");
startActivity(intent);
}
};
私はダウンロードをやろうとしてから、エラーを持っていた:
java.lang.SecurityException: No permission to write to /storage/emulated/0/Download/app-release.apk: Neither user 10062 nor current process has android.permission.WRITE_EXTERNAL_STORAGE.
そのため、私はpermissionCheckを実装しようとしましたが、今ボタンをクリックすると何も起こりません。
いいえ、電話機はルートできません。私ができるサードパーティソース。私は今どこにいるのかを示すために質問を更新しましたが、これは固まっていますが、少なくとも最初は固まっていたのとはちょっと違っていました。 –
Androidマニフェストにandroid.permission.WRITE_EXTERNAL_STORAGEを追加 –