我要为学校做一个简单的App。
来电时必须显示敬酒。
电话听筒没有显示任何信息。
我在清单中有这个,所以权限不应该是问题
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<receiver
android:name=".ReceptorLlamadas"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
broadcastReceiver的代码
public class ReceptorLlamadas extends BroadcastReceiver {
Context context;
@Override
public void onReceive(Context c, Intent intent) {
try {
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
LlamadaListener listener = new LlamadaListener();
manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
} catch (Exception e) {
Log.e("PhoneCallError", "onReceive: ", e);
}
}
private class LlamadaListener extends PhoneStateListener {
public void onCallStateChanged(int state, String phoneNumber) {
if (state == 1) {
String mensaje = "Llamada entrante del número: " + phoneNumber;
int duracion = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, mensaje, duracion);
toast.show();
}
}
}
}
抱歉我把格式弄乱了
编辑:忘记包含一些代码
你需要在Android Manifest中声明Broadcast Receiver,就像这样在Application
标签:
<receiver
android:name=".ReceptorLlamadas"
android:enabled="true" />