2015-04-12 4 views
0

Я пытаюсь, чтобы мое приложение получало данные, совместно используемые другими приложениями. То есть когда кто-то отправляет ссылку 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); 
    } 

Я надеюсь, что это кому-то пригодится. Прошло два дня, чтобы исправить

+0

Вы должны обеспечить '' action' category' и 'data' вашей спичкой этих' 'Hangouts' WhatsApp' или' Youtobe' послал, не так ли? – SilentKnight

+0

@SilentKnight Возможно, я не понимаю, как работает эта система. Всюду я читал, что 'action = SEND',' category = DEFAULT' и 'data = TEXT/PLAIN', и вот как я его положил. Когда это сработает, я добавлю больше фильтров как 'android: host =" www.myHost.com "' – Pibs

+0

Возможный дубликат: http://stackoverflow.com/questions/9676397/how-to-get-url-from-action -send –

ответ

0

Вы можете попробовать код из this answer:

String action = intent.getAction(); 
if (action.equalsIgnoreCase(Intent.ACTION_SEND) && intent.hasExtra(Intent.EXTRA_TEXT)) { 
    String s = intent.getStringExtra(Intent.EXTRA_TEXT); 
    Toast.makeText(context, s, Toast.LENGTH_LONG).show(); 
} 
Смежные вопросы