2015-05-25 5 views
0

В моем приложении я хочу, чтобы получить уведомление, когда поступает вызов Для этого я создал BroadcastReceiver, который выглядит следующим образом:.BroadcastReceiver для Incomming вызовов

public void onReceive(Context context, Intent intent) 
{ 
    MyPhoneStateListener phoneListener = new MyPhoneStateListener(); 

    TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 

private class MyPhoneStateListener extends PhoneStateListener 
{ 
    public void onCallStateChanged(int state, String incomingNumber) 
    { 
     if(state == TelephonyManager.CALL_STATE_RINGING) incommingCall(incomingNumber); 
     else if(state == TelephonyManager.CALL_STATE_IDLE) endingCall(incomingNumber); 
    } 

    //... 
} 

Моя проблема сейчас в том, что этот приемник никогда не вызывается. Я зарегистрировал его в манифесте следующим образом:

<receiver 
    android:name="com.cilenco.interrupts.ContactControl" 
    android:enabled="true" 
    android:exported="false" > 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 

Что-то не так с этим? Или это получатель, которого я не могу зарегистрировать из манифеста? Если это так, у вас есть другие идеи, как реализовать это, если пользователь не должен запускать мое приложение?

ответ

2

сделать вас что и ОС Windows может отправлять широковещательные передачи в ваше приложение, если вы укажете экспортированную на фальшивую ОС Android, будет игнорировать ваше приложение.

+0

Спасибо, что сейчас работаете. – Cilenco

-1
Try this one: 



    public class Incomingcallreceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(final Context context, Intent intent) { 
      // TODO Auto-generated method stub 

     Do your stuff 


     } 

     } 

Добавьте это в manifset зарегистрировать приемник для вызова

 <receiver 
      android:name="com.example.enwaye_connect.Incomingcallreceiver" 
      android:label="Incomingcallreceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      </intent-filter> 
     </receiver> 
android:exported="false" атрибут истинного

android:exported="true" 

так

Добавить разрешение также

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.SEND_SMS" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" > 
    </uses-permission> 
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" > 
    </uses-permission> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.READ_LOGS" /> 
+0

В чем ваша проблема – Prashant

+0

Почему у минус этот ответ – Prashant

Смежные вопросы