2012-11-28 21 views
5

Próbuję przechwycić transmisję nadchodzącego połączenia, ale nie działa.Nie działa odbiornik transmisji połączenia przychodzącego (Android 4.1)

To jest mój manifest:

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

<uses-sdk android:minSdkVersion="9" /> 

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

<uses-feature 
    android:name="android.hardware.camera" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.front" 
    android:required="false" /> 

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" > 
    <receiver android:name=".PhoneStateBroadcastReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 
</application> 

To mój odbiornik transmisji

package com.test.bgPicture; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 

public class PhoneStateBroadcastReceiver extends BroadcastReceiver{ 

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

     TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
     telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE); 
    } 
} 

I słuchacz ..

package com.test.bgPicture; 

import android.content.Context; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 
import android.widget.Toast; 

public class CustomPhoneStateListener extends PhoneStateListener { 

//private static final String TAG = "PhoneStateChanged"; 
Context context; //Context to make Toast if required 
public CustomPhoneStateListener(Context context) { 
    super(); 
    this.context = context; 
} 

@Override 
public void onCallStateChanged(int state, String incomingNumber) { 
    super.onCallStateChanged(state, incomingNumber); 

    switch (state) { 
    case TelephonyManager.CALL_STATE_IDLE: 
     //when Idle i.e no call 
     Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show(); 
     break; 
    case TelephonyManager.CALL_STATE_OFFHOOK: 
     //when Off hook i.e in call 
     //Make intent and start your service here 
     Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show(); 
     break; 
    case TelephonyManager.CALL_STATE_RINGING: 
     //when Ringing 
     Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show(); 
     break; 
    default: 
     break; 
    } 
} 
} 

Ale nie są grzanki wyświetlany, a ny pomysł?

EDYCJA: Właśnie wypróbowałem to z innym telefonem z androidem 2.3.6 i działało, ale na pierwszym urządzeniu (Android 4.1) nie działało. Dlaczego to możliwe?

+0

spróbuj 'Log.v („onCallStateChanged”,„Stan telefonu Idle”);' i sprawdzić logcat ponieważ może to możliwe kontekst używasz do wyświetlania Toast nie jest dostępny –

+0

To nie pomogło .. Zrobiłem zauważ, że działa na Androida 2.3.6, ale nie na Androida 4.1, jakiś pomysł? –

Odpowiedz

10

Znalazłem problem, musisz ręcznie uruchomić działanie z aplikacji, zanim odbiorniki telewizyjne zaczną działać z Androidem 3.0.

+0

zaakceptuj odpowiedź ... !!! –

+0

Muszę poczekać do jutra, zanim będę mógł to zaakceptować. –

+0

Czytałem gdzieś na blogach, że jest to pewna funkcja bezpieczeństwa, więc aplikacja, której użytkownik nigdy nie aktywował, rozpoczynając działanie, nie otrzyma transmisji. –

-1

Czy próbowałeś dodać odbiornik telewizyjny do usługi? Usługa ma pozostać aktywna nawet wtedy, gdy aplikacja jest zamknięta/zminimalizowana. Check this link

Powiązane problemy