2015-06-21 57 views
0

我試圖在接到來電/撥出電話時顯示敬酒信息。 如果應用程序關閉,則接收器無法正常工作。 我不想使用服務。請幫助我。即使關閉應用程序,我也想使用廣播接收器

'I am using the below receiver code' 
    public class CallReceiver extends BroadcastReceiver 
    { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
       if (isConnected(context)) { 
        if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
         Toast.makeText(context, "Call in progress", Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 

    'This is receiver registered in manifest' 
    <receiver android:name="com.example.android.testapplication.CallReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"></action> 
      <action android:name="android.intent.action.new_outgoing_call"></action> 
     </intent-filter> 
    </receiver> 
+0

修復您的''元素。特別是第二個,不會被認可,因爲Android是區分大小寫的。 – CommonsWare

+0

謝謝你。我修好了。但是如果應用程序關閉,接收器仍然無法工作。 – Niranvj

+1

我想你需要一個[Service](http://developer.android.com/guide/components/services.html)。 – Xplouder

回答

0

嘗試將電話狀態權限添加到清單。

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
+0

我已經添加了此權限 – Niranvj

0

通過當您註冊一個BroadCastReceiverAndroidOS這意味着Receiver始終爲Service部分甚至是你的應用程序無法正常工作,因爲你不必擔心這個問題了默認。 我認爲問題在於你註冊你的方式Receiver是不正確的。

隨着in/out來電,你應該使用PhoneStateListener,它已經覆蓋onCallStateChanged方法。你可以在那裏使用3個狀態。可能this example將有幫助。

相關問題