2017-02-08 3 views
0

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

Intent i= new Intent(android.content.Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(android.content.Intent.EXTRA_SUBJECT,"Subject"); 
i.putExtra(android.content.Intent.EXTRA_TEXT, "xyz.com/blah"); 

i.putExtra("important stuff", "important stuff"); 

startActivity(Intent.createChooser(i, "Share via")); 

Я также добавил это в манифесте:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="http" /> 
    <data android:scheme="https" /> 
    <data android:host="xyz.com" /> 
</intent-filter> 

Так щелкать общий текст, мое приложение открывает. Теперь я хочу работать в своем приложении в соответствии с important stuff. Однако, щелкнув по нему (например, от Whatsapp), я получаю только следующее полученное намерение.

Имя Строки: com.android.browser.application_id

Значение в ключе: com.whatsapp

Как я могу получить обратно important stuff я послал на намерении?

+0

Дополнительные намерения будут идти только вместе с вашим намерением использования и обрабатываться приложением, которое отвечает на это намерение. Когда пользователь нажимает на вашу ссылку, совершенно новые намерения создаются без этих дополнительных функций. Если вам нужны эти данные в вашем приложении после того, как ссылка будет нажата из другого приложения, то либо это приложение должно отправить эти дополнительные (маловероятные) данные, либо вам нужно иметь соответствующие данные в URL-адресе ('https://example.com/ ключ/значение') например –

ответ

2

Как я могу вернуть важный материал, который я отправил по намерению?

У вас нет.

В то время как вы, безусловно, можете поместить случайные дополнительные услуги на Intents, не ожидайте от них каких-либо приложений. В частности, нет ничего в the ACTION_SEND documentation, требующем от разработчиков ACTION_SEND делать что-либо со случайными дополнениями, не говоря уже о том, чтобы как-то вернуть их вам.

Аналогичным образом, хотя вы можете изобретать новые HTTP-заголовки, нет необходимости, чтобы веб-сервер обращал на них внимание, не говоря уже о том, чтобы отправлять их обратно в ответ.

Вместо этого замените xyz.com/blah с xyz.com/important/stuff (или, возможно, xyz.com/blah?important=stuff), и получить данные из Uri используется для запуска вашей деятельности. Вы получаете это Uri через getIntent().getData() в своем методе деятельности onCreate() (или, возможно, getData() на Intent, переданном onNewIntent(), в зависимости от ваших настроек манифеста и существует ли существующий экземпляр этого действия).

+0

Спасибо! 'getData' был тем, что я искал. –