0

안드로이드 앱을 만들고 있는데 안드로이드 기기가 전화를받을 때 앱이 뭔가를 할 것입니다.하지만 앱이 계속 듣기를 원합니다. 사용자가 앱을 종료 한 경우에도 전화를 걸 수 있습니다. Manifest 파일의안드로이드 - 사용자가 앱을 종료해도 PHONE_STATE 수신자가 계속 작동하도록하는 방법

부분 :

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

PhoneStateListener.java 파일 :

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

public abstract class PhoneStateListener extends BroadcastReceiver { 

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

     String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE); 
     String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
     int state = 0; 
     if (stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      state = TelephonyManager.CALL_STATE_RINGING; 
     } 

     onCallStateChanged(context, state); 
    } 

    protected abstract void onIncomingCallStarted(Context context); 

    public void onCallStateChanged(Context context, int state) { 
     if (state == TelephonyManager.CALL_STATE_RINGING){ 
      onIncomingCallStarted(context); 
     } 
    } 
} 

PhoneStateHandler 파일 : 그래서 앱이 백그라운드에서 통화를 수신 할 어떻게

import android.content.Context; 

public class PhoneStateHandler extends PhoneStateListener{ 

    @Override 
    protected void onIncomingCallStarted(Context context) { 
     //Some code 
    } 
} 

.

답변

0

당신은 그것을 살아있는 유지하기위한 서비스를 사용할 수 있습니다이 앱에서 호출해야 서비스를 시작하는 것입니다)

1 에서 onCreate() :

Intent service = new Intent(context, MyService.class); 
context.startService(service); 
Intent service = new Intent(context, MyService.class); 
context.stopService(service); 

2) 서비스 클래스

public class MyService extends Service 
{ 
private static BroadcastReceiver m_ScreenOffReceiver; 

@Override 
public IBinder onBind(Intent arg0) 
{ 
    return null; 
} 

@Override 
public void onCreate() 
{ 
    registerScreenOffReceiver(); 
} 

@Override 
public void onDestroy() 
{ 
    unregisterReceiver(m_ScreenOffReceiver); 
    m_ScreenOffReceiver = null; 
} 

private void registerScreenOffReceiver() 
{ 
    m_ScreenOffReceiver = new BroadcastReceiver() 
    { 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
    // do something, e.g. send Intent to main app 
    } 
    }; 
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
    registerReceiver(m_ScreenOffReceiver, filter); 
} 
} 
+0

내 화면이 꺼지면 내 앱이 꺼져있을 때 작동합니까? – user8425571

+0

PhoneStateListener.java가 필요한가 아니면 MyService.java에 코드를 복사 할 수 있습니까? – user8425571

+0

이것은 앱이 꺼져 있고 서비스가 백그라운드에서 실행 중일 때 작동하며 onRecieve() 메소드가있는 MyService.java에서 PhoneStateListener.java를 복사해야합니다. –

관련 문제