2015-05-21 4 views
0

Я пытаюсь выполнить некоторую работу во время входящих вызовов. Я пытаюсь как этотBroadcast Receiver не вычитает звонки - Android

public class callDeductor extends BroadcastReceiver { 



     @Override 
     public void onReceive(Context context, Intent intent) {          
      String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);      


      if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
      { 
       Toast.makeText(context, "Phone Is Ringing", Toast.LENGTH_LONG).show(); 

      } 

      if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) 
      { 
       Toast.makeText(context, "Call Recieved", Toast.LENGTH_LONG).show(); 
      } 

      if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) 
      { 
       Toast.makeText(context, "Phone Is Idle", Toast.LENGTH_LONG).show(); 

      } 

     } 

    } 

Это мой Manifeast:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.deduct.calldeduct" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="21" /> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/icon" 
     android:label="Call Deduct" > 
     <receiver android:name="com.deduct.calldeduct.callDeductor" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

проверить с мобильным и эмулятор. Но в нем нет тостов. Пожалуйста, дайте мне знать, где я ошибся.

У меня есть ссылки с этих сайтов. Link 1 Link 2

+0

Эти ответы могут помочь обнаружить входящий вызов. http://stackoverflow.com/questions/15563921/detecting-an-incoming-call-coming-to-an-android-device http://stackoverflow.com/questions/6610750/how -to-detect-and-manage-incoming-call-android – zzas11

+0

Ур код работает как charm..it works – DJphy

+0

Не удаляйте активность ur или файл xml-активности, а также не удаляйте активность, которая будет автоматически зарегистрирована в манифесте при запуске нового проекта. В том же пакете класса основной активности есть и класс CallDetector. Зарегистрируйте этот приемник в манифесте, как вы сделали. Не делайте ничего в основной деятельности ура. Затем запустите его, ур активности запустится, сделайте звонок, и 100% получите тост. – DJphy

ответ

1

Продолжая свой разговор с спрашивающего как answer.I Только начал новое приложение для Android и разработан как я уже говорил в комментариях .. манифеста выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.dj.randomtest" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="19" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 


    <receiver android:name=".CallDetector"> 
     <intent-filter>     
      <action android:name="android.intent.action.PHONE_STATE" />     
     </intent-filter> 
    </receiver> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

CallDetector класс выглядит следующим образом (ур код):

public class CallDetector extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 


    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);      


    if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
    { 
     Toast.makeText(context, "Phone Is Ringing", Toast.LENGTH_LONG).show(); 

    } 

    if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) 
    { 
     Toast.makeText(context, "Call Recieved", Toast.LENGTH_LONG).show(); 
    } 

    if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) 
    { 
     Toast.makeText(context, "Phone Is Idle", Toast.LENGTH_LONG).show(); 

    } 

} 

} 

ScreenShot of the project set up:

+0

И что было вашим результатом? Что не так в OP? – Trinimon

+0

Notin wrong, jus tell что код айзера работает нормально ... См. мой разговор с вышеперечисленным. Ответ - продолжение беседы. – DJphy

+0

Хорошо, я вижу. Я бы добавил небольшой вывод здесь t hough :) ... только разница, которую я вижу, заключается в том, что вы используете относительный путь класса здесь: 'android: name =". CallDetector "' .... и вы следовали за соглашением об именах Java;) – Trinimon

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