提前致谢。
当我打印Log.d("me",getIntent().toString());
我得到了:
Intent { act=android.intent.action.CALL_PRIVILEGED dat=tel:888 flg=0x13800000 cmp=com.ninetology.freecall.two/.CallFinalActivity }
我正在尝试获取与“dat”相关联的值但我得到NullPointer异常。
//the code I am using is
getIntent().getStringExtra("dat"); // no use
//i tried
getIntent().getExtras("dat").toString(); // NullPointer exception
我尝试用“tel”作为上面代码中的键仍然没用。
答案 0 :(得分:4)
getExtras()
函数返回一个可以从中提取数据的包,而不是返回特定String的函数。
dat
不是字符串值,您可以从打印的数据中看到。它是Uri
,
尝试解析它,我确信你将能够获取数据。
public void onCreate(Bundle b) { //mistyped
super.onCreate(b);
Uri data = getIntent().getData();
// OR USE THIS
String data = getIntent().getDataString();
// DO STUFF
}
答案 1 :(得分:1)
首先,没有必要来自Intent的字符串你得到的日志中有一个带有值的对象..
所以最好只检查它不是 null ,比如
Bundle bundle = getIntent().getExtras();
if(bundle ! = null)
{
// Now check you bundle object which has a values or not
}
else
{
// 1. get data in form of Uri
Uri data = getIntent().getData();
// 2. OR get string of Uri
String dataString = getIntent().getDataString();
// 3. Or split the data string
// The logic from this part may be different on your requirement.. I only suggests you to get data from string.. (Actual logic may different on your case)
String data = getIntent().toString();
data = data.subString(data.indexOf(":"), data.indexOf("flg")-1);
Log.e("tel:", data);
}
答案 2 :(得分:0)
尝试getIntent().getExtras().get("dat");
答案 3 :(得分:0)
如果您想通过意图传递数据,只需在开始活动之前添加以下代码
intent.putExtra("dat", value);
// value =您要发送的值
如果您想在另一个活动中获取相同的值,请执行以下操作:
Bundle bundle=getIntent().getExtras();
if(bundle!=null){
String string=bundle.getString("dat");
}
通过这样做,你不会得到空指针异常并且会帮助你。