プログラムでアプリをダウンロードすることは可能ですか?特定のアプリでGooglePlayを起動するつもりはありません。3つのアプリがあり、すべて関連していますが、機能が異なるとします。ダウンロードすると他の3つもダウンロードしてハブとして機能する4つ目のアプリを作成することは可能ですか?もしそうなら、誰かが私を正しい方向に向けることができますか?
4 に答える
アプリを自動的にインストールすることはできません。これはユーザーにとってかなり危険です。
たくさんの新しいAPKをダウンロードできますが、ユーザーは.apksを開いて自分でAPKをインストールする必要があります。
ただし、内部で1つの大きなアプリを作成することもできますが、ランチャーアクティビティとして複数のアクティビティを設定できるため、複数の小さなアプリとして表示できます。多分それはあなたのためのオプションですか?
拡張ファイルのオプションもあります。おそらくそれは法案に合うかもしれませんか?
うん。私は先日これをしました。アプリにはいくつかの権限が必要です。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.DELETE_PACKAGES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
外部ストレージを書き込むのは、APKファイルをどこかにダウンロードして保存する必要があるためです。
さらに、何らかの方法でファイルを取得する必要があります。私はJavaのHttpUrlConnection
オブジェクトを使用して実際のダウンロードを行います(Androidアプリでファイルをダウンロードする方法のより良い説明を検索できるかもしれませんが、それは非常に簡単です)。
ファイルをダウンロードしたら、パッケージマネージャーを起動してインストールするように指示します。残念ながら、ユーザーはアプリをインストールするために通常と同じダイアログに直面し、インストールを拒否することを選択できます。ユーザーの介入なしにインストールするには、アプリからADBに接続し、その方法でパッケージマネージャーを呼び出す必要がありますが、そこにどのような特権が含まれるかはわかりません。ユーザーにインストール確認ダイアログが表示されてもかまわない場合は、次のコードが機能します。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(new File("/sdcard/whereever-you-saved-this.apk")), "application/vnd.android.package-archive");
startActivityForResult(intent, 0);
FLAG_ACTIVITY_NEW_TASKは、インストールしているAPKがパッケージマネージャーの起動に使用したアプリを上書きした場合に、一部の電話でクラッシュするのを防ぎます。
これは次の方法でも実行できます。
Webサービスを介してサーバーからAPKファイルをダウンロードし、ダウンロード後、INSTALL_PACKAGES権限を使用してこれらのAPKファイルをインストールします。