【发布时间】:2018-08-17 16:11:50
【问题描述】:
我正在尝试做一个应用程序来获取来电者号码,将其发送到我的 web api,获取响应并将响应显示为屏幕上的弹出窗口,其中包括有关呼叫的其他信息。这不会是一个公共应用程序。当我在模拟器上进行测试时,它在所有情况下都能按预期工作。我在手机上安装了应用程序并像在模拟器上一样对其进行了测试,并按预期工作。当我按下“最近使用的应用程序”按钮并将其滑出时,它突然停止接听电话并显示弹出窗口。我有正确的 AndroidManifest 条目。
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />
//other parts of manifest file
<receiver
android:name=".CallReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
BroadcastReceiver 类
public class PhonecallReceiver extends BroadcastReceiver {
//some declarations
@Override
public void onReceive(Context context, Intent intent) {
Date currentTime = Calendar.getInstance().getTime();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("OnReceive");
myRef.setValue("PhonecallReceiver onReceive.");
//other codes
我添加了 Firebase 以查看来电时发生的情况。在模拟器上,它在所有情况下(应用滑出、屏幕锁定等)都会向 Firebase 添加一个条目,但是在我的手机上,它只会在应用在最近的应用中处于活动状态时才会将记录添加到 Firebase。
即使从最近的应用中刷出应用,我也需要接收来电数据。
手机:Android 7.0 上的 Xiaomi Redmi Note 4,应用了最新的可用更新。
【问题讨论】: