有没有办法通过扩展BroadcastReceiver来监听操作系统的广播来监听来电,而不使用PhoneStateIntentReceiver或PhoneStateListener。
另请告诉我清单中的操作和权限是什么。
我尝试过如下操作,但它不适用于传入呼叫,但适用于传出呼叫
app仅有1个.java文件如下(该app只有1个.java文件和1个manifest文件)
package com.crsardar.media.audio;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class IncommingCallReceiverCRS extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.e("Chitta : ", "Its working");
}
}
manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.crsardar.media.audio"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="IncommingCallReceiverCRS" android:enabled="true">
<intent-filter>
<!--action android:name="android.intent.action.NEW_OUTGOING_CALL"/-->
<action android:name="android.intent.action.ANSWER" >
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
</manifest>
您在清单中定义的操作不正确。这是一个操作意图,可用于接听电话而不是监听来电。
您可以使用两个广播接收器来收听ACTION_PHONE_STATE_CHANGED http://developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED and 新拨出电话 http://developer.android.com/reference/android/content/Intent.html#ACTION_NEW_OUTGOING_CALL广播意图。
当有新的来电、呼叫应答或挂断时,将会收到 ACTION_PHONE_STATE_CHANGED(有关此 Intent 收到的 EXTRA 的文档,请参阅文档)。
当您的设备上有新的拨出呼叫时,将收到 NEW_OUTGOING_CALL。
至于权限,我认为您在清单中得到了正确的信息(我假设 RECORD_AUDIO 权限用于您应用程序中的其他内容)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)