2012-08-13 10 views
7

Il Web e StackOverflow contengono diversi esempi su come ottenere un file da un'altra app Android (ad esempio, per utilizzarlo come allegato e-mail) utilizzando un intento ACTION_GET_CONTENT. Ma che tipo di classe devo implementare per creare un'applicazione che fornisca contenuti per l'evento ACTION_GET_CONTENT, come posso scegliere questa app (ad es. Per selezionare un allegato di posta elettronica).Come fornire contenuto per Intent.ACTION_GET_CONTENT

ContentProvider è la soluzione giusta? E cosa devo aggiungere al mio AndroidManifest.xml?

risposta

15

Dopo alcune ore di ricerca sul Web ho trovato la seguente soluzione.

  1. Implementare un intent di gestione attività. All'interno, utilizzare la seguente o più specifiche di codice:

    Uri resultUri = // the thing to return 
    Intent result = new Intent(); 
    result.setData(resultUri); 
    setResult(Activity.RESULT_OK, result); 
    finish(); 
    
  2. Aggiungere il seguente al manifesto:

    <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

Si prega di vedere che dose non funziona in questo caso http://stackoverflow.com/questions/14151970/extra-slash-appends-with-file-uri -so-nome-file-è-set-vuoto-in-file-input-contr –

+0

Sembra funzionare per me senza il filtro di intent ACTION_PICK. Qualche idea per quale caso quel filtro intent è necessario per rispondere? Sembra funzionare solo con l'intento GET_CONTENT su entrambi i KK pre/post. – cargo8

0

a partire dal livello di API 18 intenti in entrata può anche avere EXTRA_ALLOW_MULTIPLE impostata su true e in questo caso puoi inviare di nuovo più di un file. Per fare ciò è necessario impostare come ClipData:

resultIntent.setClipData(clipData) 
Problemi correlati