2012-08-13 7 views
7

Der Web- und Stackoverflow enthält mehrere Beispiele, wie Sie eine Datei aus einer anderen Android-App mithilfe einer ACTION_GET_CONTENT-Absicht abrufen können (z. B. um sie als E-Mail-Anhang zu verwenden). Aber welche Art von Klasse muss ich implementieren, um eine Anwendung zu erstellen, die Inhalt für das Ereignis ACTION_GET_CONTENT bereitstellt, z. B. dass ich diese App auswählen kann (z. B. um einen E-Mail-Anhang auszuwählen).Inhalt für Intent.ACTION_GET_CONTENT bereitstellen

Ist ein ContentProvider die richtige Lösung? Und was muss ich meiner AndroidManifest.xml hinzufügen?

Antwort

15

Nach einigen Stunden Websuche fand ich die folgende Lösung.

  1. Implementieren Sie eine Aktivität, die Intents behandelt. Innerhalb Verwenden Sie die folgende oder mehrere spezifische Code:

    Uri resultUri = // the thing to return 
    Intent result = new Intent(); 
    result.setData(resultUri); 
    setResult(Activity.RESULT_OK, result); 
    finish(); 
    
  2. Fügen Sie folgende an dem Manifest:

    <activity 
        android:name="ActivityName" 
        android:label="Some label" > 
        <intent-filter> 
         <action android:name="android.intent.action.GET_CONTENT" /> 
         <category android:name="android.intent.category.OPENABLE" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="*/*" /> 
        </intent-filter> 
        <intent-filter> 
         <action android:name="android.intent.action.PICK" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="*/*" /> 
        </intent-filter> 
    </activity> 
    
+0

Bitte beachten Sie, dass es in diesem Fall nicht Dosis arbeiten http://stackoverflow.com/questions/14151970/extra-slash-appends-with-file-uri -so-Dateiname-is-set-empty-in-Datei-Eingabe-contr –

+0

Scheint, für mich ohne den ACTION_PICK Intent-Filter zu arbeiten. Gibt es eine Idee, in welchem ​​Fall dieser Intent-Filter antworten muss? Scheint mit nur der GET_CONTENT-Absicht sowohl vor als auch nach KK zu arbeiten. – cargo8

0

von api Level 18 eingehende Absicht beginnen auch EXTRA_ALLOW_MULTIPLE auf true gesetzt haben können und In diesem Fall können Sie mehr als eine Datei zurücksenden. Um dies zu tun, müssen Sie es als ClipData setzen:

resultIntent.setClipData(clipData) 
Verwandte Themen