从Android的Intent获取值

时间:2012-07-05 06:55:03

标签: android android-intent

提前致谢。 当我打印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 个答案:

答案 0 :(得分:4)

似乎你做错了。

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

  2. dat不是字符串值,您可以从打印的数据中看到。它是Uri

  3. 尝试解析它,我确信你将能够获取数据。

    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");
       }

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