2012-11-21 157 views
2

我是新開發的android開發人員,所以請在這裏與我聯繫。我現在只是在黑客入侵學習。廣播接收器沒有收到的意圖

我試圖顯示一條消息,當用戶使用標準的Android撥號器發出呼叫。

我在我的活動下面的代碼

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main);   
     setTestButtonListener(); 
     Log.i(LOG_TAG, "Activity started..."); 

    } 

    private void setTestButtonListener() 
    { 
    Button testButton = (Button)this.findViewById(R.id.testButton); 
    testButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 

      Log.i(LOG_TAG, "Clicked on test..."); 
      Toast.makeText(getApplicationContext(), (CharSequence)"You clicked on the test button" ,Toast.LENGTH_SHORT).show(); 
      Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+150)); 
      MainActivity.this.sendOrderedBroadcast(intent, null); 
      MainActivity.this.startActivity(intent); 
      Log.i(LOG_TAG, "intent broadcasted... I think... "); 
     } 
    }); 
    } 

然後在廣播接收器(以及從它派生的類):

public class OnMakingCallReceiver extends BroadcastReceiver 
{ 
    private static final String LOG_TAG = OnMakingCallReceiver.class.getSimpleName() + "_LOG"; 

    @Override 
    public void onReceive(Context context,Intent intent) 
    { 
      Log.i(LOG_TAG, " got here!");  
    } 
} 

然後在AndroidManifest.xml

<uses-permission android:name="android.permission.CALL_PHONE" /> 

    <receiver android:name=".OnMakingCallReceiver" android:priority="999"> 
     <intent-filter> 
      <action android:name="android.intent.action.CALL"/> 
     </intent-filter> 
    </receiver> 

我點擊測試按鈕,看到這個輸出。

點擊了測試... 意圖廣播......我想......

而且多數民衆贊成。我希望看到「到了這裏!」。

任何想法,爲什麼我不?

感謝,

克里斯

回答

0

你定義在你的AndroidManifest.xml中的接收器?

此外,ACTION_CALL_BUTTON在您點擊直接撥號的東西時發送。你確定你是這麼做的。

+0

是接收方被定義到清單。不,我想要ACTION_CALL。我已更新原始帖子。你怎麼看? @joe – Chris

+0

有什麼想法?任何人? – Chris

+0

PS我也試過完全限定 Chris

0

我在AndroidManifest.xml中使用了它,它工作。我認爲關鍵的是intent-filter中的intent NEW_OUTGOING_CALL。

<receiver android:name=".OnMakingCallReceiver" android:exported="true" android:enabled="true"> 
     <intent-filter android:priority="999"> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      <action android:name="android.intent.action.ACTION_CALL" /> 
     </intent-filter> 
</receiver> 

可能是ACTION_CALL可能被刪除。此外,這可能需要添加到清單:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />