gpt4 book ai didi

android - 如何在查看应用程序信息的同时使用拨号器?

转载 作者:行者123 更新时间:2023-11-29 02:35:05 26 4
gpt4 key购买 nike

情况:我的应用程序的用户需要调用他们的联系人并且仍然能够查看特殊的联系信息。

使用以下代码很容易发起调用:

private void performDial(String numberString) {
if ( checkSelfPermission(android.Manifest.permission.CALL_PHONE) ==
PackageManager.PERMISSION_GRANTED) {
if (!numberString.equals("")) {
Uri number = Uri.parse("tel:" + numberString);
Intent dial = new Intent(Intent.ACTION_CALL, number);
startActivity(dial);
}
}
}

但是拨号器的 GUI 会隐藏联系人信息。为了查看此联系信息,用户必须执行两个步骤:

  1. 按下主页按钮这会将拨号器缩小为一个小“图标”。
  2. 使用左键在列表中选择正确的应用程序运行应用程序。显示相关信息的同时还有以“图标”形式激活的拨号器。

问题:

是否可以以“图标”形式启动拨号器 Intent ?

是否可以通过编程方式执行这两个步骤?

我已经尝试过的:Intent 参数 Flags 和 Extras,似乎没有提供以“图标”形式启动拨号器的选项。

以下代码 fragment 模拟主页按钮:

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

下面的 fragment 可以将主应用程序带回前面。

Intent intent = new Intent(this, MainActivity.class);
intent. addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

然而,在拨号器激活后,这两个 fragment 都将不起作用。如果在启动intent后直接执行这些 fragment ,拨号器将不会启动。

这是 list 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="copec.test2app">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ShowWebsite"> </activity>
<receiver android:name="copec.test2app.OutCallLogger" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>

</application>

感谢任何帮助。

最佳答案

您无法隐藏拨号器。您可以做的是将您的应用程序移动到拨号器顶部的前台。使用 startActivity() 启动拨号程序后,您应该等到调用启动。您可以通过监视传出调用状态,或者只是等待几秒钟来做到这一点(您可以通过将以下代码包装在 Runnable 中,然后将其发布到 Handler 使用 postDelayed()。然后,要将您的应用移至前台,请执行以下操作:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("your.package.name");
getApplicationContext().startActivity(intent);

关于android - 如何在查看应用程序信息的同时使用拨号器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47536857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com