安卓 - 如何通过程序接收来电?

3
我希望能够在我的应用程序中通过编程的方式接收来电。
我尝试了一些代码,但它没有起作用。
下面是我的挂断代码。
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);
    }


}

使用这段代码,我可以结束任何接收到的电话,但当我将"endCall"更改为"answerRingingCall"时,它不能从我的应用程序接收来电。请问如何解决这个问题。

关于权限,我无法在应用程序上应用此权限。

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

请查看附加的屏幕截图。 enter image description here 显示权限仅授予系统应用程序。如何解决此问题。
提前感谢。

请查看此链接 - http://androideasylessons.blogspot.in/2012/09/answer-incoming-call-in-android.html - Narendra Singh
https://dev59.com/umUp5IYBdhLWcg3wJU9J - Jitesh Upadhyay
这段代码在Lollipop上能运行吗? - Roadies
@DroidWormNarendra,你的解决方案不起作用。:( - Roadies
@JiteshUpadhyay,请查看我附上的屏幕截图,你的解决方案不起作用。 - Roadies
1个回答

0

这可能会有所帮助

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);

在Android L中是否可以接收来电? - Roadies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接