2011-06-19 9 views
7

発信コールを聴くブロードキャストレシーバからアクティビティを起動しようとしています。問題は、アクティビティは起動されていませんが、ダイヤルインビルドアクティビティ私は意図の優先順位を100に変更しましたが、無駄にしました。組み込みの呼び出しアクティビティではなく、ダイヤルでアクティビティを起動するにはどうすればよいですか?発信コールを聴くブロードキャストレシーバからアクティビティを起動する

package com.messageHider; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class launchReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     String compare_num="5556"; 
     if(number.equals(compare_num)) 
     { 
      Intent myintent=new Intent(context,messageHider.class); 
      myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myintent); 
      abortBroadcast(); 
     } 
    } 

} 

マニフェストファイル:あなたのマニフェストに

<receiver android:name=".launchReceiver"> 
    <intent-filter android:priority="0"> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 
    </intent-filter> 
</receiver> 
+0

あなたは正しく来たことがありますか? – Zapnologica

答えて

3

あなたが(ドキュメントによる)1社の許可が必要です。

あなたにPROCESS_OUTGOING_CALLS権限を保持しなければならない。ここ コードですこれを受け取る 意図。

そして、それはストレートドキュメントからも

"android.permission.PROCESS_OUTGOING_CALLS" 

です:放送を中止してはいけません、この意図を受け

どれBroadcastReceiver。

そして、ここでは、私は情報だページへのリンクです:

http://developer.android.com/reference/android/content/Intent.html

+0

意図のコード例はありませんか? – Zapnologica

+0

送信されるインテントは 'android.intent.action.NEW_OUTGOING_CALL'です。インテントはシステムによって送信されます。あなたがそれを受け取ったら、インテントデータから 'EXTRA_PHONE_NUMBER'を取得し、アプリケーションがコールを処理するようにするには' resultData'をヌルに設定する必要があります。あるいは、電話番号を変更することができます。あたらしい番号。私はしばらくそれを使用していませんが、それは私がドキュメントから得ているものです。それは役に立ちますか?そうでない場合、正確にどのようなサンプルコードが必要ですか? – Jakar

3

代わりのabortBroadcastで放送を中止します();アクティビティーを起動した後にsetResultData(null)を使用して呼び出しを終了します。

関連する問題