2014-12-31 2 views
-3

У меня есть Ури, хранящийся в виде строки. Я назвал его launchIntent:
Почему есть дополнительная часть, когда parseUri() String?

Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.facebook.katana cmp=com.facebook.katana/.LoginActivity }<br/> 

Когда я использую этот
Intent i = Intent.parseUri(launchIntent, 0); Log.d("ABC", i.toString());
Logcat дает это как значение i.toString():

Intent { act=android.intent.action.VIEW dat=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.facebook.katana cmp=com.facebook.katana/.LoginActivity } flg=0x10000000 }<br/> 

Почему есть дополнительные { act=android.intent.action.VIEW dat=... часть?

+0

Потому что именно так вы его и установили. Исходная строка не является URI. – Henry

+0

String - это намерение запуска Facebook, но я должен разобрать его на String для хранения в базе данных. В другом слове, если эта строка была намерением, я могу начать с нее Facebook. Как я могу превратить это в намерение без добавления или опускания чего-либо? Это уже намерение, которое мне нужно, но единственная проблема в том, что он находится в String. – user4407462

+0

@henry нет, это не так. Дополнительная часть просмотра проистекает из того факта, что это действие по умолчанию используется, когда формат проанализированного URI не соответствует таковому, заданному «Intent # toUri()», то есть, когда парсер выглядит как «errr I dunno what вы пытаетесь разобрать ». – ataulm

ответ

1

docs сказать, что если URI вы пытаетесь разобрать не был сгенерирован myIntent.toUri() тогда он будет рассматривать строку как URI и установить действие для просмотра:

Создать намерение из URI. Этот URI может кодировать поля действия, категории и других намерений, если он был возвращен toUri (int). Если намерение не было создано toUri(), его данными будет весь URI, и его действие будет ACTION_VIEW.

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