Eigene Activity mit Intent-Filter

  • 5 Antworten
  • Letztes Antwortdatum
R

reneph

Dauer-User
367
Hey,

ich möchte eine Datei aus einer App exportieren und dabei den ACTION_SEND-Intent nutzen, damit mir - neben den Möglichkeiten von Gmail, Dropbox, Drive etc - auch meine Aktivität angeboten wird (siehe Anhang).

Das Ganze funktioniert auch soweit.

Mein Problem ist aber folgendes: ich möchte, dass diese Activity nur angezeigt wird, wenn der ACTION_SEND-Intent aus meiner App heraus gestartet wurde.

Aktuell wird er nämlich bspw. auch in der Dropbox angeboten, wenn ich da eine Datei exportieren will. Um das zu unterbinden habe ich schon versucht eine eigene Permission auf die Activity zu legen, aber ohne Erfolg.

Folgende relevanten Codes aus der AndroidManifest.xml:
PHP:
<permission android:name="com.reneph.meineapp.permission.send"
     android:protectionLevel="signature" />
<uses-permission android:name="com.reneph.meineapp.permission.send"/>

<activity
     android:name=".FileBrowser_Save_Activity"
     android:configChanges="orientation|screenSize|locale"
     android:windowSoftInputMode="stateUnchanged"
     android:label="@string/Save_To_Filesystem"
     android:permission="com.reneph.meineapp.permission.send" >
     <intent-filter>
          <action android:name="android.intent.action.SEND" />
          <category android:name="android.intent.category.DEFAULT" />
          <data android:mimeType="application/*" />
      </intent-filter>
</activity>
Jemand eine Idee, wo das Problem ist/was ich falsch mache oder wie ich es sonst lösen könnte?
 

Anhänge

  • Screenshot_2013-10-04-10-37-23.png
    Screenshot_2013-10-04-10-37-23.png
    59,1 KB · Aufrufe: 327
Hi,

ich glaube das funktioniert nicht. Das einzige was du noch filtern könntest wäre über den mimType...
Aber wieso willst du es denn bei anderen Apps nicht sichtbar haben? Wegen fehler abfangen, kannst du es auch über den Code machen..

Gruß
 
Ich wills nicht allen Apps zur Verfügung stellen, weil es da einfach nicht funktionieren wird und das auch keinen Sinn macht.

StefMa schrieb:
ich glaube das funktioniert nicht

Da glaube ich anders, hehe :D

Eine App, wo das beispielsweise vor kommt, ist Dropbox. Geht mal auf eine Datei -> Exportieren. Dort hat man ganz oben die Option "Auf SD-karte speichern..." oder sowas. Das ist eine Dropbox-eigene Activity und die wurde mir auch bisher nur in Dropbox angeboten. Die haben das also auch irgendwie gelöst und das entspricht ja genau dem, wie ich es auch gern hätte.

Laut Doku sind die eigenen Permissions gerade dafür da, Aktivitäten nur für die Apps freizugeben, welche auch die Permission deklariert haben (muss gemacht werden, weil android:exported="false" nicht mehr zieht, sobald ein Intent-Filter drin ist).

Dazu sagt die Doku:

http://developer.android.com/guide/topics/manifest/activity-element.html#exported schrieb:
This attribute is not the only way to limit an activity's exposure to other applications. You can also use a permission to limit the external entities that can invoke the activity (see the permission attribute).


@Otandis_Isunos: Dort ist das Problem doch genau anders herum, der User will seine Activity angezeigt bekommen und bekommt sie nicht angezeigt - oder überseh ich da was?
 
Kann es sein, dass der Auswahldialog in der dropbox app einfach komplett selbst von denen entwickelt wurde?
Das ist ja nicht der chooser von Android, sondern ein Dialog mit der Liste der möglichen Aktionen.

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
  • Danke
Reaktionen: reneph
Also habs gelöst bekommen. Aber nicht mit dem Permissions-Zeug.

Ich erstelle mir nun einen Custom Intent-Chooser.

Auf Basis folgendem Beitrags: https://gist.github.com/mediavrog/5625602
In dem Beitrag gehts zwar darum, wie man bestimmte Apps aus dem Intent-Chooser filtern kann, aber auf dieser Basis kann man auch seinen eigenen hinzufügen. So kann ich den Intent-Filter aus meiner AndroidManifest.xml raus nehmen und schon ist das Problem gelöst.

@ Vacutainer: Japp, danke, darauf läufts wohl hinaus.
 

Ähnliche Themen

BerndFfm
Antworten
7
Aufrufe
1.321
swa00
swa00
K
Antworten
3
Aufrufe
1.021
mezzothunder
mezzothunder
Zurück
Oben Unten