2

カスタムROMでフラッシュしてクライアントに配布するAndroidデバイスがたくさんあります。そのROMの一部として、デバイスに関連付けられている「サポート」アプリがあります。GooglePlayに公開することはできません。ソフトウェアの更新バージョンをダウンロードしてインストールする機会をユーザーに提供できるようにする必要があります。コードの確認、ダウンロード、インストールはすでに実装されていますが、不明なソースからのアプリのインストールを有効にするように構成されているデバイスに依存しています。デバイスがこの特定のapkをダウンロードしてインストールできるようにする必要がありますが、それでも不明なソースからの他のアプリをインストールすることはできません。

これは可能ですか?

(編集:選択した回答が最終的にどのように機能したかを明確にするため)

アクティビティに追加されたコードは次のとおりです。

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() +"/update.apk")), "application/vnd.android.package-archive");
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);

startActivityForResult(intent, 0);

androidマニフェストに、次のコードが追加されました。

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

アプリをインストールした後、ルートファイルエクスプローラーを使用してapkを移動し、電話をリセット/user/apps/system/appsた後、ユーザーに信頼できないソースを有効にするように求められることなく、アプリを自分自身の上にインストールすることができました。インストールプロンプトが表示され、アプリに必要な権限が一覧表示され、ユーザーにインストールするかどうかを選択できますが、それでも問題ありません。

4

1 に答える 1

2

この方法は、システムアプリ(ソース)でのみ機能します

フィールドを追加してapkをインストールしてみてください。

intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);

これを試したことがありません。ドキュメントには、これを機能させるにはstartActivityforResultを呼び出す必要があると書かれています。ただし、これにはAPIレベル14が必要です。

intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);

編集:考え直して、カスタムROMがある場合は、shareduseridシステムをインストーラーアプリに追加し、呼び出しているものを直接呼び出してPackageInstallerActivityアプリをインストールします

Edit2:

このコードを確認してください。OnClickはアプリのインストールに使用されるため、コード全体をアプリにコピーして追加します

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

許可。

そして、アプリのAndroid.mkに追加します

 LOCAL_CERTIFICATE := platform
于 2012-09-04T13:10:10.463 に答える