Получить значение android.intent.extra.EMAIL из пакета

Я создал одно приложение наподобие почтовых клиентов, например Gmail.

Когда пользователь нажимает на адрес электронной почты в других приложениях и выбирает мое приложение из приложений для отправки электронной почты в списке, появляется .

Содержимое электронной почты, такое как адрес электронной почты, тема электронной почты и .... приходят в мое приложение намеренно.

Но проблема в том, что intent.getData(); все время имеет значение null, и я пытаюсь получить данные электронной почты от intent.

Я протестировал bundle в intent и увидел, что он не нулевой, и когда я пишу этот код:

bundle = intent.getExtras();
                Log.e("Email",bundle.toString());

bundle.toString() вернуть Bundle[{android.intent.extra.EMAIL=[Ljava.lang.String;@11cda76c}] .

Я не знаю, что это за [Ljava.lang.String;@11cda76c}] и как я могу получить адрес электронной почты отсюда! ?


person hossein masomzadeh    schedule 02.03.2017    source источник
comment
это похоже на stackoverflow.com /вопросы/15881033/   -  person Camahalan Royette    schedule 02.03.2017
comment
@camahalanroyette я думаю, что эта ссылка о том, как получить специальный пакет, когда мы его создадим. но я не знаю, что такое содержимое пакета. только я могу получить это   -  person hossein masomzadeh    schedule 02.03.2017


Ответы (1)


Здесь найден ответ Передача значений через пакет и получение его ценность другого действия

bundle = this.getIntent().getExtras();
String email= bundle.getString("EMAIL");

Изменить:

bundle = this.getIntent().getExtras();
String [] emails=bundle.getStringArray(Intent.EXTRA_EMAIL );
person Camahalan Royette    schedule 02.03.2017
comment
Спасибо, но bundle.getString("EMAIL") вернул мне нулевое значение. - person hossein masomzadeh; 02.03.2017
comment
если вы точно прочитали мой вопрос. я не создавал никакого пакета. только я получаю его из других приложений, и теперь я хочу получить доступ к его содержимому. - person hossein masomzadeh; 02.03.2017
comment
Я искал и обнаружил, что дополнительная электронная почта — это массив, поэтому попробуйте String [] emails=bundle.getStringArrayExtra(Intent.EXTRA_EMAIL ); - person Camahalan Royette; 02.03.2017
comment
класс пакета не имеет метода с именем: getStringArrayExtra я использовал этот код: String [] emails= bundle.getStringArray(Intent.EXTRA_EMAIL); когда я печатаю электронные письма, он показывает мне что-то вроде этой строки: [Ljava.lang.String;@2244b9ca. ты знаешь что это? - person hossein masomzadeh; 02.03.2017
comment
Извините, это getStringArray вместо getStringArrayExtra - person Camahalan Royette; 02.03.2017
comment
хорошо, я использовал это, чтобы преобразовать его в строку, спасибо за помощь Arrays.toString(email array from bundle); пожалуйста, отредактируйте ваш ответ, я принял ваш ответ. - person hossein masomzadeh; 02.03.2017
comment
Электронные письма в пакете хранятся в массиве, потому что он может содержать одного или нескольких получателей электронной почты, поэтому преобразование в строку может быть проблемой, когда два или более получателя будут переданы вашему намерению. - person Camahalan Royette; 02.03.2017