2

提前致谢。当我打印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”作为键仍然没有用。

4

4 回答 4

4

看来你做错了。

  1. getExtras()函数返回一个可以从中提取数据的包,而不是返回特定字符串的函数。

  2. dat从打印的数据中可以看出,它不是字符串值。这是一个Uri

尝试按您应该的方式解析它,我相信您将能够获取数据。

public void onCreate(Bundle b) { //mistyped
    super.onCreate(b);
    Uri data = getIntent().getData();
    // OR USE THIS
    String data = getIntent().getDataString();
    // DO STUFF
}
于 2012-07-05T07:03:34.533 回答
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);
}
于 2012-07-05T07:02:39.247 回答
0

尝试getIntent().getExtras().get("dat");

于 2012-07-05T07:04:14.050 回答
0

当您想通过意图传递数据时,只需在开始活动之前添加以下代码

intent.putExtra("dat", value); //value=你要发送的值

当您想在另一个活动中获取相同的值时,只需执行以下操作:

Bundle bundle=getIntent().getExtras();
if(bundle!=null){
      String string=bundle.getString("dat");
       }

通过这样做,您将不会得到空指针异常并且会帮助您。

于 2012-07-05T07:15:32.123 回答