Android(ターゲット25)ではバックグラウンドサービスがあり、onCreate機能で電話状態のリスナーを初期化しました。 Nougatの前のAndroidバージョンではうまく動作しますが、Nougatでは許可が与えられても動作しません。テレフォニーマネージャが登録されていないため、onCallStateChangedがトリガされないように、私は問題が何であるかを知らないAndroid Nougat PhoneStateListenerがトリガーされていません
public class Service extends IntentService
{
class PhoneListener extends PhoneStateListener
{
String TAG = getClass().getName();
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
super.onCallStateChanged(state, incomingNumber);
switch (state)
{
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG,"IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG,"OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG,"RINGING");
break;
}
}
}
public Service()
{
super("ChatService");
}
public Service(String name)
{
super(name);
}
@Override
public void onCreate()
{
super.onCreate();
TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(TELEPHONY_SERVICE);
PhoneListener listener = new PhoneListener();
tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
}
}
は、それが見えます。 私の推測の1つは、Android Mに導入されたDoze機能ですが、まだこのコードは「仕事中」に電話が見つからなくてもAndroid 6で正常に動作します