2

Androidでアプリケーションのインストール/アンインストールをプログラムで防止することは可能ですか?可能であれば、Kidsアプリケーションでこれをどのように行うことができますか。有用な回答を得ることができませんでした。

前もって感謝します

4

4 に答える 4

2

そのようなことをするためのAPIはありません

しかし-あなたはあなた自身のカスタマイズされたランチャーを開発することができます

Android-カスタムランチャーを作成し、それによってユーザーの表示を制限したり、必要なことだけを実行したりします。たとえば、すべてのアプリケーションを表示するホーム画面を実装する場合、アンインストール機能を実装する場合、パスワードを要求するダイアログを開きます。

また、システムバーの非表示を実装するために、デバイスをルート化する必要があります。これは、ユーザーが設定にアクセスできないようにするためです。ステータスバーを非表示にするのは少し注意が必要で、Linuxコマンドを実行する必要があります。たとえば、ハニカムでは、次のように実行できます-http://android.serverbox.ch/?p =306

stock-romに付属している組み込みのデフォルトランチャーはそのような機能を提供しませんが、GooglePlayでそのような機能を提供するカスタムランチャーを見つけることができると確信しています。ランチャーをインストールしてデバイスを再起動した後(デフォルトのランチャーとして定義できます)、それによって、お子様がデバイスを再起動した場合でも、カスタムランチャーにのみアクセスできます。

Android開発者として、ランチャーアプリを開発する人にとっては非常にシンプルな開発機能であるため、このようなランチャーをまだ誰も開発していないとしたら、私は非常に驚きます。

于 2012-12-31T06:30:18.183 に答える
1

Android Lollipop(5)以降、DevicePolicyManager APIを使用すると、プロファイル所有者管理者またはデバイス所有者管理者は、管理対象アプリケーションを非表示にしてブロックアンインストールできます。管理アプリケーションをプロファイル所有者またはデバイス所有者としてプロビジョニングした後、次のAPIを使用します。

  • setUninstallBlocked:これにより、デバイスから削除できないパッケージ名を定義できます。プロファイル/デバイスの所有者のみがこのフラグを有効/無効にできます。
  • setApplicationHidden:これにより、非表示になるパッケージ名を定義できます。つまり、完全に無効になり、ランチャーから消えます。アプリケーションを非表示にしてもアンインストールされないことに注意してください。管理者はいつでもアプリケーションを再表示して、すべてのユーザーデータを含むアプリを完全に復元できます。

プロファイル所有者管理者の場合、両方のAPIはプロファイル管理インスタントアプリケーションにのみ適用できます(作業プロファイルを設定した後、ほとんどのアプリケーションは複製され、ユーザーインスタントとプロファイルインスタントの2つのインスタンスがあります)。


システムuid(android:sharedUserId = "android.uid.system" )を共有するシステムアプリケーションは、 IPackageManagerインターフェイスを直接呼び出すことにより、プロファイル/デバイスの所有者でなくても同じ機能を使用できます。

于 2018-01-25T16:32:19.277 に答える
0

お子様の知らないうちにこれを実行したい場合は、お子様の携帯電話にインストールされているアプリを時々確認し、不要なアプリをアンインストールすることができます。INSTALL_PACKAGES権限を付与して、アプリをサイレントインストールするで承認された回答を参照してください。アプリはデバイスシステム証明書で署名されている必要があります。

于 2012-12-31T06:39:15.090 に答える
-2

はい、プログラムでそれを行うことは可能です。以下のコードから、インテントを使用してそれを行うことができます。APKをインストールします:

 Intent intent = new Intent(Intent.ACTION_VIEW);
 intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
 startActivity(intent);

APKをアンインストールします:

 Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package",
 getPackageManager().getPackageArchiveInfo(apkUri.getPath(), 0).packageName,null));
 startActivity(intent);

お役に立てば幸いです。ありがとうございます。

于 2012-12-31T06:30:11.487 に答える