2011-06-19 31 views
7

我想從監聽到呼出的廣播接收機是5556的問題是啓動一個活動的廣播接收器的活動,該活動不被推出,但錶盤內置活動被調用時,我已將意圖的優先級更改爲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

在你的清單,你需要一個許可(根據文檔):

您必須持有PROCESS_OUTGOING_CALLS權限收到此 意圖。

這是

"android.permission.PROCESS_OUTGOING_CALLS" 

而且直接從文檔:

任何廣播接收器接收到這個意圖不得中止播出。

這裏是鏈接到頁面,在這裏我得到的信息:

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)在啓動活動後結束呼叫。

相關問題