2010-11-05 9 views
5

Ich habe die Intent-Filter-Dokumentation angeschaut und kann diesen spezifischen Intent-Filter nicht herausfinden.Was ist ein Intent-Filter, der beim Teilen einer URL nur eine App im Freigabe-Menü anzeigen würde?

Ich möchte ACTION_SEND verwenden, da ich die App nur in anderen Menüs in den "Teilen" -Menüs anzeigen lassen möchte. Ich möchte nur im Freigabe-Menü erscheinen, wenn der Text der Absicht eine URL ist. Zum Beispiel, was vom Share-Menü des Android-Browsers geteilt wird. Ich möchte nicht, dass die App im Freigabe-Menü angezeigt wird, wenn es sich nur um Text und nicht um eine URL handelt.

Was ich habe, so weit ist:

<intent-filter android:label="Label"> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/*" /> 
</intent-filter>  

Dies ist jedoch einen beliebigen Text erhalten, nicht nur urls.

Dank

Antwort

1

Sie IntentFilter Objekte programmatisch erstellen können, und sie können unter anderem ... viel mehr Kontrolle über URI-Schema filtern.

Ich dachte, Unterklasse IntentFilter würde Ihnen Ereignis mehr, aber sie machte alle Variationen auf "match" final, so dass Sie sie in einer Unterklasse nicht überschreiben können. Bah!

Eurika!

Sie können eine Daten "scheme" anstelle eines MIME-Typ angeben. Fragen Sie einfach nach "http" und "https" (in separaten Intent-Filtern?).

<intent-filter> 
    ... 
    <data android:scheme="http"/> 
</intent-filter> 
+0

Danke, ich werde einen Blick darauf werfen. Wenn ich es programmgesteuert erstelle, funktioniert es auch, wenn die App nicht läuft? – cottonBallPaws

+0

Ich habe diesen Link durchgesehen und bin mir nicht sicher, wie es funktionieren würde, den IntentFilter abzuleiten. Haben Sie irgendwelche Links, die einige Beispiele geben? Danke noch einmal. – cottonBallPaws

+0

Eigentlich habe ich keine Ahnung ... und ohne die Möglichkeit, "Match" neu schreiben zu können, bin ich mir nicht sicher, ob es einen Sinn hat. Außerdem solltest du alle verfügbaren Attribute über das Manifest festlegen können, also bin ich mir nicht sicher, ob mein Vorschlag so hilfreich ist. –