0

私は、フォアグラウンドアプリケーションを監視するバックグラウンドサービスを持っています。特定のアプリを保護するために使用され、保護されたアプリがフォアグラウンドにあり、別のアプリが起動したためにバックグラウンドにプッシュされると、別のアプリがフォアグラウンドアプリとして引き継がれたという通知がユーザに表示されます。サービスからトースト通知を表示

私はスイッチを検出することができますが、検出後にサービス内のユーザーにアラートするためのToast通知/ AlertDialogを表示する方法はありますか?

+1

サービスで警告ダイアログを表示することはお勧めできません。あなたはそれを示すために活動の文脈が必要です。サービスからアクティビティにナビゲートし、アラートダイアログを表示します –

+0

アラートダイアローグの方法、トースト、または他の形式の通知は行っていませんか?フォアグラウンドアプリを引き継ぐアクティビティは私のものではないことに注意してください。それは私のActitivyをハイジャックした可能性があります – user1118764

答えて

3

Serviceクラスのアプリ基本コンテキストを取得し、Handlerを使用してトーストを表示できます。

private Context appContext; 

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     appContext=getBaseContext();//Get the context here 
    } 

    //Use this method to show toast 
    void showToast(){ 
     if(null !=appContext){ 
     Handler handler = new Handler(Looper.getMainLooper()); 
     handler.post(new Runnable() { 
      @Override 
      public void run() 
      { 
        Toast.makeText(appContext, "Toast Message", Toast.LENGTH_SHORT)show(); 
      } 
     }); 

     } 
    } 
+0

これを試しましたか?私はそれが動作するとは思わない –

+0

私はこれを最後のプロジェクトで使用しました。それは動作します:) – Stallion

+0

ダイアログについてはどうですか? –

0

あなたがメインルーパーを取得するためにハンドラを使用することができ、この

final Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
       Toast.makeText(getBaseContext(), "TEST", Toast.LENGTH_SHORT).show(); 

       handler.postDelayed(this, 1000); 
       } 
      },1000); 
0

のように試してみてください。以下を試してみてください

Handler handler = new Handler(Looper.getMainLooper()); 
handler.post(new Runnable(){ 
@Override 
public void run(){ 
Toast.makeText(YourServiceName.this,"your message",Toast.LENGHT_SHORT).show(); 
} 
}); 
関連する問題