我正在开发一个应用程序,它会依次进行一系列调用。为了检测调用已结束,我创建了广播接收器,该接收器在调用结束时成功触发,但我无法获取其中的电话号码。这是我的代码
public class EndCallReceiver extends BroadcastReceiver {
Preferences pref;
Context ctx;
@Override
public void onReceive(Context context, Intent intent) {
ctx = context;
pref = new Preferences(ctx);
Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
String incomingNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
Toast.makeText( ctx, incomingNumber, Toast.LENGTH_LONG).show();
}
}
}
}
Toast 中没有任何显示。传入号码为空。谁能告诉我。如何在结束调用 BroadcastReceiver 内获取电话号码。
最佳答案
在 AndroidManifest.xml 中,您需要注册广播:
<receiver android:name=".EndCallReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
您的代码:
public class EndCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String phoneNumber= bundle.getString("incoming_number");
}
}
关于android - 在调用结束广播接收器中获取电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232556/