我们可以从InCallService或Telecom.Call获取呼叫详细信息,如来电号码和联系方式吗?

问题描述 投票:0回答:1

我实际上想要覆盖默认调用屏幕并处理我的活动中的所有内容。我面临的问题是如何获取来电号码,以及它是否是来自Telecom.Call对象的手机中存储的联系人,因为这是InCallService onCallAdded方法中唯一可用的对象。

感谢您的帮助。

public MyConnectionService() {
}

@Override
public void onCallAdded(Call call) {
    super.onCallAdded(call);
    Log.d("Call","new call Added");
    CallActivity.call=call;
    startActivity(new Intent(this,CallActivity.class));
}

@Override
public void onCallRemoved(Call call) {
    super.onCallRemoved(call);
    Log.d("Call","Call Removed");
}

这是接受和拒绝来电的活动。现在屏幕只显示2个接受和拒绝来电的按钮,它工作正常,我需要在屏幕上显示的联系方式。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_call);

    name=findViewById(R.id.name);

    screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
            PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
    screenLock.acquire();

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

    name.setText(call.getRemainingPostDialSequence());  //call.getDetails().getCallerDisplayName()

    call.registerCallback(new Call.Callback() {
        @Override
        public void onCallDestroyed(Call call) {
            super.onCallDestroyed(call);
            CallActivity.this.finish();
        }

        @Override
        public void onDetailsChanged(Call call, Call.Details details) {
            super.onDetailsChanged(call, details);
            Log.d("details",call.getRemainingPostDialSequence()+":"+details.getCallerDisplayName());
        }
    });

}
android in-call
1个回答
0
投票

你有两个选择。

  1. 要求用户将您的应用程序设为默认的手机应用程序(基本上您的应用程序将是您需要实现的新InCallService / InCallUI),请参阅:https://developer.android.com/reference/android/telecom/InCallService
  2. 实现PhoneStateListener以检测手机状态更改(空闲/响铃/摘机)并在适当的时候在默认的InCallUI上方显示您的UI,请参阅:https://developer.android.com/reference/android/telephony/PhoneStateListenerAdd PhoneStateListener
© www.soinside.com 2019 - 2024. All rights reserved.