我使用以下代码来获取电话号码。我将数字存储在一个静态变量中。当我尝试在另一个活动中使用该变量时,它会抛出NullPointer异常。
package com.income;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
public class IncomingCallReceiver extends BroadcastReceiver {
static String info = null;
static String phonenumber;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
if (null == bundle)
return;
Log.i("IncomingCallReceiver", bundle.toString());
String state = bundle.getString(TelephonyManager.EXTRA_STATE);
Log.i("IncomingCallReceiver", "State: " + state);
if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) {
phonenumber = bundle
.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
// String d=bundle.getString(TelephonyManager.EXTRA_STATE_IDLE)
Log.i("IncomingCallReceiver", "Incomng Number: " + phonenumber);
info = phonenumber;
}
if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)) {
Toast.makeText(context, info, Toast.LENGTH_LONG).show();
Intent intent1 = new Intent(context, MissedCall.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
}
}
答案 0 :(得分:0)
基于您获得NullPointerException
这一事实,这意味着捆绑包为null
,这使得pone编号为空。
我建议你看看如何获取来电者的电话号码(here),就像在这篇文章中所做的一样。
修改强>
我所看到的是,您从未将电话号码存储在启动活动的意图中,因此您永远不会获得所述活动的电话号码。现在,intent1.putExtra("phoneNumber", phoneNumber);
中的电话号码不为空,请尝试使用BroadcastReciever
,并使用MissedCall.class
从intent.getExtras("phoneNumber");
检索{{1}},并尝试获取该号码。
答案 1 :(得分:0)
检查你的intent.putstring()方法