2017-01-19 9 views
-1

を起動するから、私は、アプリケーション(私のアプリケーションが)起動からアプリを防ぐことを可能にするソリューションを探しています。ランチャーの意図だけでなく、パッケージ全体を起動できないようにしたい。防止アプリ

私はいくつかの制限がありますが:

  • ルート
    • アプリケーションは、自宅
    • アプリケーションは、アプリケーションがアクセスできるどのようなシステム

    することはできません置き換えることはできませんデバイス管理者

  • これは、特定のアプリケーションを制限するMDMS、またはデバイスのポリシーに関連するものです通常のAndroidのユーザー空間内で他に何か

は、しかし私は、たとえば、[設定]を起動するか、電卓からシステムアプリを無効にしたいです。

私は交換したいのですが、現在のソリューションは、ActivityManagerの実行中のプロセスのリストを使用して、特定のアプリのいずれかが開始されたかどうかをチェックするために500msごとに走っています。 Lollipop MR1(5.1)には使用統計情報サービスが含まれているため、これはAPI 22以降ではわずかに変更されています。これは、最後に起動されたアプリのクエリが容易な場所です。その後、サービスは現在のランチャーアクティビティを起動し、アプリケーションを「無効にする」ように進みます。

私は、アプリの起動自体は、しかし、私はそうすることについての説明を見つけることができない、(私たちは根とデバイス管理者権限を持っている、覚えている)トリガはプロセスを強制終了させた場合、それが良いだろうと信じています。

答えて

0

アプリケーションは、あなたがこの方法を使用することができますコマンドを実行するには、コマンド

"pm disable " + packageName 

を実行することにより、他のアプリケーションを無効にすることができ、ルートアクセスがある場合:

public void execute(String command){ 
    try{ 
     Process su = Runtime.getRuntime().exec("su"); 
     DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); 

     outputStream.writeBytes(command); 
     outputStream.flush(); 

     outputStream.writeBytes("exit\n"); 
     outputStream.flush(); 
     su.waitFor(); 
    }catch(IOException e){ 
     throw new Exception(e); 
    }catch(InterruptedException e){ 
     throw new Exception(e); 
    } 
} 

をこれにすることはできませんパッケージは無効になりますもう発射されました。

アプリケーションは、あなたがにApplicationInfoフラグを使用することができるシステムであるかどうかを確認したい場合:

public static boolean isSystemApp(String packageName){ 
    try { 
     ApplicationInfo app = this.getPackageManager().getApplicationInfo(packageName, 0);   
     return info.flags & ApplicationInfo.FLAG_SYSTEM) != 0; 
    } catch (Exception ignored) { 
     return false; 
    } 
} 
+0

私は特に、システムのアプリで、特定のパッケージを無効にしたくありません。たとえば、[設定]をクリックします。言ってやるが、私は電話が展示されている店舗を持っている、と私はfookin子供が5分後にオープニング画面ロックのパスワード/パターンをオンにする、または任意の他の設定を改ざん停止したいです。このために、電話機が設定アプリを起動できないようにします。デモユニット(Playストアなど)の目的で危険であると判断されたアプリは、他にもあります。 – fonix232

+0

mdmにボタンを追加して、デモ用のパッケージをいくつかオフにすることができます。 – Yoleth

+0

I'vaは、MDMを開発し、アプリケーションが起動することはできません唯一の解決策は、それを無効にすることです。私のMDMは場合によっては設定を無効にし、必要に応じて有効にします。 – Yoleth