1. ホーム
  2. android

[解決済み] Android, 他のアプリの起動を検出する。

2022-12-30 16:36:53

質問

パスワードがないと指定したアプリにアクセスできないようにするアプリを開発しようとしています。シナリオは...

  1. ユーザーは、quot;Email" アプリ (例) をクリックします。
  2. アプリの起動を検出する
  3. メールアプリであることを確認する。
  4. 私のアプリは、パスワードを要求するビューを上に開きます。
  5. ユーザーがパスワードを入力すると、私のアプリは消え、上部に"Email"アプリが残ります。

何日も Broadcast Intents などについて読み、私のトライアル プロジェクトで "android.intent.action.MAIN" などをリッスンしようとしましたが、私以外のアプリが開始されたときに検出できないようです。

どなたか助けていただけませんか。開始する意図をブロードキャストしている新しいアプリを探すというのは正しい方法でしょうか、それとも新しい意図をシステム ログで読むか、ネイティブ コードで何かを行うべきでしょうか。

どのようなポインタでも助かります。たとえ完全に答えることができなくても、私はもう少し研究をすることができます。ありがとうございました。Ian

どのように解決するのですか?

私は私達が使用することができると思います logcat を使用して、その出力を分析することができます。

すべての同様のプログラムで、私はこの許可を見つけました。

android.permission.READ_LOGS

全部使うということですが、プログラムが起動して、その後にうちのプログラム(app protector)が起動して、前面に持ってくるようです。

以下のコードを使用してください。

try
    {
        Process mLogcatProc = null;
        BufferedReader reader = null;
        mLogcatProc = Runtime.getRuntime().exec(new String[]{"logcat", "-d"});

        reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream()));

        String line;
        final StringBuilder log = new StringBuilder();
        String separator = System.getProperty("line.separator"); 

        while ((line = reader.readLine()) != null)
        {
            log.append(line);
            log.append(separator);
        }
        String w = log.toString();
        Toast.makeText(getApplicationContext(),w, Toast.LENGTH_LONG).show();
    }
    catch (Exception e) 
    {
        Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
    }

また、マニフェスト・ファイルにその権限を追加することを忘れないでください。