android - 在调用结束广播接收器中获取电话号码?

标签 android android-intent broadcastreceiver

我正在开发一个应用程序,它会依次进行一系列调用。为了检测调用已结束,我创建了广播接收器,该接收器在调用结束时成功触发,但我无法获取其中的电话号码。这是我的代码

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/

相关文章:

android - Google 应用内计费,升级到 Android L Dev Preview 后出现 IllegalArgumentException : Service Intent must be explicit,

android - 以编程方式禁用 android list 中的 Intent 过滤器

java - 当您的应用程序通过通知打开时,是否可以从打开的位置返回到上一个应用程序?安卓

android - 开机后如何使用broadcastreceivers自动启动服务?

java - 具有 MEDIA_BUTTON Intent 的 BroadcastReceiver 未收到任何内容

javascript - 触摸事件在 Android PhoneGap WebView(甚至内置浏览器)中不起作用

android - 在 Ionic 4 中处理后退按钮的问题

android - 在 wifi-direct p2p 连接中获取对等设备的 IP 地址

java - AlarmManager 不执行任何操作

android - 无法在 BroadcastReceiver 中接收 CALL Intent