2015-02-11 75 views
0

在我的應用程序中,我使用Broadcast Receiver來收聽電話狀態事件(即收到的呼叫,空閒等)。代碼如下:即使在啓動後也能聽到電話狀態

public class PhoneCallreceiver extends BroadcastReceiver { 
    private boolean ringing; 
    private boolean received; 

    public PhoneCallreceiver() { 
    } 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.v("ranjith", "enterted receiver"); 
    Bundle bundle = intent.getExtras(); 
    String incomingnumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
    String state = bundle.getString(TelephonyManager.EXTRA_STATE); 
    Log.v("ranjapp", state); 

    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
     ringing = true; 
     received = false; 
    } 
} 

的Manifest.xml

<receiver 
     android:name=".PhoneCallreceiver" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"/> 
     </intent-filter> 
    </receiver> 

我的問題是我想自動啓動BroadCast Receiver設備重新啓動後。我有一個BroadCast Receiver聽開機,但我不知道如何啓動廣播接收器。

的Manifest.xml

<receiver 
     android:name=".backend.BootStarter" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

代碼:

public class BootStarter extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     PhoneCallreceiver callreceiver = new PhoneCallreceiver(); 
     context.registerReceiver(callreceiver,new IntentFilter(**what to put here**)); 
      } 
     } 
+0

BootStarter不是正在播放,還是沒有正確註冊電話狀態廣播接收器? – 2015-02-11 20:07:36

+0

BootStarter正在啓動,但如何啓動BootStarter的onReceive內的PhoneCallReceiver? – Psypher 2015-02-11 20:15:12

+0

您是否嘗試在您的.PhoneCallReceiver中添加啓動完成的意圖過濾器? – 2015-02-11 21:42:49

回答

0

找到了答案,我的問題,IntentFilter的行動得到phonestate是android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED

我更新的代碼如下:

public class BootStarter extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    PhoneCallreceiver callreceiver = new PhoneCallreceiver(); 
      context.registerReceiver(new PhoneCallreceiver(), new IntentFilter(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED)); 
     } 
    } 
相關問題