我想从我的应用程序中按语法接收来电。
我试过一些代码,但没用。
下面是我的结束通话代码。

TelephonyManager tm = (TelephonyManager) ctx
            .getSystemService(Context.TELEPHONY_SERVICE);

    try {
        if (tm == null) {
            // this will be easier for debugging later on
            throw new NullPointerException("tm == null");
        }


        tm.getClass().getMethod("endCall").invoke(tm);//answerRingingCall

    } catch (Exception e) {
        Log.e("sdsd", "Unable to use the Telephony Manager directly.", e);
    }


}

使用此代码,我可以结束任何传入的呼叫,但当我将“end call”更改为“answerringcall”时。它没有收到来自我的应用程序的呼叫。请帮助解决此问题。
关于权限,我无法对应用程序应用此权限。
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

请参见附加屏幕快照。
它显示权限只授予系统应用程序。如何解决这个问题。
提前谢谢

最佳答案

这可能会有帮助

private class CallStateListener extends PhoneStateListener {
  @Override
  public void onCallStateChanged(int state, String incomingNumber) {
      switch (state) {
          case TelephonyManager.CALL_STATE_RINGING:
          // called when someone is ringing to this phone

          Toast.makeText(ctx,
                  "Incoming: "+incomingNumber,
                  Toast.LENGTH_LONG).show();
          break;
      }
  }
}

tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

07-27 15:06