【问题标题】:Recover phone call UI恢复电话用户界面
【发布时间】:2015-03-06 14:49:55
【问题描述】:

基本上我想从我的activities 之一中的一个按钮开始当前的电话用户界面。

到目前为止,我已经能够使用

发起新通话了
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:000000"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

或移动到电话簿使用:

Intent intent = new Intent(Intent.ACTION_CALL_BUTTON);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

我也尝试使用该代码,但它似乎不适用于 HTC 设备和某些华为设备(rinull)。

Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER);
intentToResolve.setPackage("com.android.phone");
ResolveInfo ri = getPackageManager().resolveActivity(intentToResolve, 0);
if (ri != null) 
{
    Intent intent = new Intent(intentToResolve);
    intent.setClassName(ri.activityInfo.applicationInfo.packageName, ri.activityInfo.name);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

我想要的是直接移动到呼叫 ui。行为与此过程中的相同:

  1. 正在通话中
  2. 返回主屏幕
  3. 展开通知栏
  4. 点击通话行

我不知道如何实现以及如何使其适用于所有设备。

感谢您的宝贵帮助。

【问题讨论】:

    标签: android android-intent phone-call


    【解决方案1】:

    您必须按照此答案的建议进行操作:android.permission.CALL_PHONE for tablets

    添加通话电话权限:

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

    然后拨打Intent.ACTION_CALL

    Intent intentcall = new Intent(
              Intent.ACTION_CALL, 
              Uri.parse("tel:" + phonenumber));
    startActivity(intentcall);
    

    编辑:

    有一种方法可以做,但它在 Lollipop 和 forward 中不起作用,因为出于安全原因,它已被弃用。

    您可以使用ActivityManagerget the running tasks,然后分析each RunningTaskInfo 的内容以确定哪个是“电话”,然后使用task ID to call moveTaskToFront。它可能有效,但正如我所说,它不适用于 Lollipop 和未来版本。

    【讨论】:

    • 提问的目的不是要拨打电话,而是要返回到一个正在进行中的通话屏幕。这对它有用吗?
    • 哦...非常抱歉,我理解错了。那我就不上班了。
    • 看看我的编辑。不是一个很好的答案,只是提出一些想法。
    • 感谢您的回答。我试试看。
    • 您好,它似乎可以在 LG L5 等旧设备上运行,但是当我转移到三星 ACE 4 或 S4 或事件 LG L65 时,我遇到了问题。在com.android.phone id 上运行moveTaskToFront 不起作用并引发警告:Task to front request from 10112 stopped。知道为什么它不起作用吗? (权限看起来没问题)。
    猜你喜欢
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多