2017-03-07 3 views
-1

私は、起動している他のアプリを検出し、そのアプリに進む前にアクティビティを起動するこのコードスニペットを持っています。問題は他のアプリケーションに対しては効果的ではないが、自分のアプリケーションが起動したことだけを検出し、他のアプリケーションは検出しないということです。皆さん、私のプロジェクトです。私はこれを適切に実装する必要があります。そこにはコードはありません。他のアプリの起動を検出する

private final Handler toastHandler = new Handler() 
{ 
    @Override 
    public void handleMessage(Message msg) 
    { 
    String activityOnTop; 
    ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1); 
    ActivityManager.RunningTaskInfo ar = RunningTask.get(0); 
    activityOnTop=ar.topActivity.getClassName(); 

    if(activityOnTop.equals("com.appcontroller")) 
    { 
     pActivity = activityOnTop.toString(); 
    } 
    else 
    { 
     if(activityOnTop.equals(pActivity) || activityOnTop.equals("com.appcontroller")) 
     { 

     } 
     else 
     { 
     Intent i = new Intent(MyService.this, BreakTimeView.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(i); 
      Toast.makeText(MyService.this, pActivity, 1).show(); 
      pActivity = activityOnTop.toString(); 

     } 
    } 




    } 
};  

答えて

0

ライブでアプリの起動を検出することはできません。あなたの方法は一度だけ検出し、実行中のタスクです。あなたはサービスを作り、exemapleのために、毎秒あなたの方法を開始する必要があります(タスクを実行しているトップをチェックしてください)。しかし、それは非常に悪い習慣です。あなたは非常に速くあなたのバッテリーを殺すでしょう。

関連する問題