2012-07-05 2 views
2

Заранее спасибо. При печати Log.d("me",getIntent().toString());получить значение от намерения android

Я получаю:

Intent { act=android.intent.action.CALL_PRIVILEGED dat=tel:888 flg=0x13800000 cmp=com.ninetology.freecall.two/.CallFinalActivity }

Я пытаюсь получить значение, которое связано с «Дат», но я получаю исключение NullPointer.

//the code I am using is 
getIntent().getStringExtra("dat"); // no use 
//i tried 
getIntent().getExtras("dat").toString(); // NullPointer exception 

Я пробовал использовать «tel» в качестве ключа в приведенном выше кодексе до сих пор бесполезно.

+1

Какова ваша команда put, где вы устанавливаете значение dat? –

+0

Thnks thepoosh для комментариев. Но мне нужны данные для моего приложения. Как я могу достичь этого –

+0

Thnks M Mohsin Naeem для комментариев, я ничего не ставил вручную. то есть данные, полученные из набора номера по умолчанию. –

ответ

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 
} 
1

Прежде всего, его не нужна строка из Intent ваши получает в журнале есть объект со значениями ..

Так лучше, чтобы просто проверить сво не нуля, как,

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); 
} 
+0

Черт, это уродливо. Разве нет способа понять, где он хранится в дополнениях вместо того, чтобы делать вызов подстроки? – RvdK

+0

@PoweRoy - Да, уродливо, но он пытается получить данные от намерения, которые не определили значения в нем. Так что это может быть вариант для него. Логика должна быть изменена по его требованиям. – user370305

+0

также, вероятно, также даст вам некоторые ложные значения, если после раздела «tel:» не следует «flg» ... – herom

0

попробовать getIntent().getExtras().get("dat");

+0

Спасибо за ан. getIntent(). getExtras() сам по себе является нулевым, тогда он будет вызывать исключение nullinterinter для getIntent(). getExtras(). get ("dat"); ...... –

0

Если вы хотите передать данные с целью просто добавьте следующий код перед началом Активность в

intent.putExtra("dat", value); // значение = значение, которое вы хотите отправить

И когда вы хотите получить одно и то же значение в другой деятельности, просто выполните:

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

Посредством этого вы не получите исключение нулевого указателя и вам поможет.

Смежные вопросы