2012-03-26 5 views
0

私はアンドロイド携帯電話の着信があったときにアクティビティを開始しようとしています。そのために、鳴っている状態で、私はアクティビティを開始し、このアクティビティを前面に出すためのフラグを設定します。ここでは、コードです:私は受け入れられたか、私の呼び出しを拒否したときにアンドロイドのフロントにアクティビティを届けるブロードキャストレシーバ

 Intent intent2open = new Intent(ctx, Main.class); 
    intent2open.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK |  Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); 
    intent2open.setAction("android.intent.action.VIEW"); 
    intent2open.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent2open.setAction(Intent.ACTION_MAIN); 
    intent2open.addCategory(Intent.CATEGORY_LAUNCHER); 
     intent2open.putExtra(name, value); 
    startActivity(intent2open); 

上記のコードを使用することにより、私は私の必要な出力を得るdidntは、いくつかのケースアプリが起動します。 その他の場合は、状態が鳴っているときに起動されます。私はこの問題に対処することができません..どのように私は私の活動を前面に持っていくことができます。

ありがとうございます。 Lokesh。

答えて

0

セットのマニフェストでは、あなたの活動へandroid:launchMode="singleTop"として、あなたのフラグを設定します。少なくとも、それは私のプロジェクトで私のためによく働く

intent2open.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT 
    |Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 
    |Intent.FLAG_ACTIVITY_NEW_TASK); 

*


更新

ブロードキャストのインテントフィルタのマニフェストの優先度を上げることも役に立ちますこの場合あなた:

<!-- Higher numbers have a higher priority --> 
<intent-filter android:priority="100"> 
+0

ありがとう、私はすでにsingleTopとしてクラスモードを設定しています。しかし使用しないでください。 –

+0

あなたの優先順位に応じて、最初にブロードキャストを受信する人の問題として最初に現れることを知ることは不確かです。私の更新された答えを見てください:http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority – waqaslam

+0

あなたのコード行から離れて、私はクラスの起動モードを "singleInstance"に変更しました。 –

関連する問題