Я пытаюсь, чтобы мое приложение получало данные, совместно используемые другими приложениями. То есть когда кто-то отправляет ссылку youtube через Whatsapp, приложение Youtube может получить его и открыть для показа.Почему мое приложение не получает намерения?
Я поставил это в манифесте:
<activity
android:name="com.example.app.MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/app_name"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
И этот код в метод MainActivity OnCreate:
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equalsIgnoreCase(action) && type != null) {
if ("text/plain".equals(type)) {
String codigoIn = intent.getStringExtra(Intent.EXTRA_TEXT);
if (codigoIn!=null) Toast.makeText(context, codigoIn, Toast.LENGTH_LONG).show();
}
}
Я пытаюсь проверить отправку себя ссылки через Hangouts. Когда я нажимаю на ссылку, выборщик показывает только Chrome и интернет-навигаторы.
Пожалуйста, что не так? Большое спасибо
UPDATE: решаемые
я уже решена. Я был очень потерян. Я не должен использовать категорию ACTION_SEND, но ACTION_VIEW. Теперь манифеста:
<intent-filter android:label="my app">
<data android:scheme="http" />
<data android:host="myHost.com" />
<data android:host="www.myHost.com" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
И я ставлю на операцию -> onResume метод:
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (action.equalsIgnoreCase(Intent.ACTION_VIEW)){
String dato = intent.getData().toString();
Intent nuevoIntent = new Intent(context, Resultado.class);
nuevoIntent.putExtra("codigo", dato);
startActivity(nuevoIntent);
}
Я надеюсь, что это кому-то пригодится. Прошло два дня, чтобы исправить
Вы должны обеспечить '' action' category' и 'data' вашей спичкой этих' 'Hangouts' WhatsApp' или' Youtobe' послал, не так ли? – SilentKnight
@SilentKnight Возможно, я не понимаю, как работает эта система. Всюду я читал, что 'action = SEND',' category = DEFAULT' и 'data = TEXT/PLAIN', и вот как я его положил. Когда это сработает, я добавлю больше фильтров как 'android: host =" www.myHost.com "' – Pibs
Возможный дубликат: http://stackoverflow.com/questions/9676397/how-to-get-url-from-action -send –