为了账号安全,请及时绑定邮箱和手机立即绑定

如何以编程方式回答/结束Android 4.1中的通话?

如何以编程方式回答/结束Android 4.1中的通话?

白猪掌柜的 2019-08-16 15:25:55
如何以编程方式回答/结束Android 4.1中的通话?我正在写一个Android应用程序,我需要接听来电,做一些工作,然后结束通话。在所有谷歌搜索之后,我可以找到两种不同的方法来实现这一点,这两种方法都不适用于Android的最新版本,特别是在4.1,Jelly Bean之后。I.)使用广播接收器中的Java Reflection为“android.intent.action.PHONE_STATE”访问“com.android.internal.telephony.ITelephony”。下面的示例代码可以在数百个相关帖子中找到:public class PhoneCallReceiver extends BroadcastReceiver {  Context context = null;  private static final String TAG = "Phone call";  private ITelephony telephonyService;@Override  public void onReceive(Context context, Intent intent) {   if (!intent.getAction().equals("android.intent.action.PHONE_STATE"))      return;   Log.v(TAG, "Receving....");   TelephonyManager telephony = (TelephonyManager)    context.getSystemService(Context.TELEPHONY_SERVICE);     try {       Log.v(TAG, "Get getTeleService...");       Class c = Class.forName(telephony.getClass().getName());       Method m = c.getDeclaredMethod("getITelephony");       m.setAccessible(true);       telephonyService = (ITelephony) m.invoke(telephony);       telephonyService.silenceRinger();       Log.v(TAG, "Answering Call now...");       telephonyService.answerRingingCall();       Log.v(TAG, "Call answered...");       //telephonyService.endCall();   } catch (Exception e) {    e.printStackTrace();    Log.e(TAG,            "FATAL ERROR: could not connect to telephony subsystem");    Log.e(TAG, "Exception object: " + e);   }  }}此方法需要工作,并且此权限已被定义为android v 2.3中的“仅适用于系统应用程序”。简而言之,普通用户应用程序无法再在清单文件中定义此权限。II。)另一种方法是模拟推动Headset钩子,这使Android接听电话。这是通过广播“Intent.ACTION_MEDIA_BUTTON”来完成的,如下面的代码所示。此方法适用于Android 4.1,之后android限制用户应用程序广播“Intent.ACTION_MEDIA_BUTTON”。所以我的结论是,目前我们无法在Android 4.1或更高版本中实现这一目标。有没有其他人找到这个问题的任何其他解决方案或解决方法?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 357 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信