2015-05-31 6 views
6

Desidero registrare la mia app Ionica (tramite Cordova) per aprire determinati tipi di file. Proprio come fa Dropbox. Quando un utente ha un file su un'altra applicazione (come la posta elettronica) e fa clic su "apri con", c'è un elenco che contiene l'app Dropbox.I tipi di file registrati di Cordova nella lista 'apri con'

Heres un tutorial da parte di Apple: https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles/RegisteringtheFileTypesYourAppSupports.html

Esiste un plugin di Cordova che supportano sia Android e iOS e dà un'API JS per questa funzione? Grazie in anticipo.

risposta

4

È possibile ottenere l'associazione FileType in Cordova.

Include 2 passaggi.

1) registrare i file in Android Manifest/iOS plist come

manifesto

<intent-filter 
    android:icon='@drawable/ic_launcher' 
     android:label='AndroidMHT File' 
    android:priority='1'> 
    <action android:name="android.intent.action.VIEW" /> 
    <action android:name="android.intent.action.EDIT" /> 
    <action android:name="android.intent.action.PICK" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:mimeType="*/*" /> 
    <data android:pathPattern="*.mht" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="http" android:host="*" android:pathPattern=".*\\.mht" /> 
    <data android:scheme="https" android:host="*" android:pathPattern=".*\\.mht" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:mimeType="message/rfc822" android:scheme="http" /> 
    <data android:mimeType="multipart/related" android:scheme="http" /> 
    <data android:mimeType="message/rfc822" android:scheme="https" /> 
    <data android:mimeType="multipart/related" android:scheme="https" /> 
</intent-filter> 

plist

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array> 
      <string>Document-molecules-320.png</string> 
      <string>Document-molecules-64.png</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>Molecules Structure File</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Owner</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.sunsetlakesoftware.molecules.pdb</string> 
      <string>org.gnu.gnu-zip-archive</string> 
     </array> 
    </dict> 
</array> 

2) Utilizzare il File Opener Plugin for Cordova

Potrebbe essere necessario passare necessaria bandiere per aprire quei file.

Riferimento: Android, iOS e phonegap community forum thread

Speranza che aiuta.

+0

Grazie per i collegamenti (ho risolto quello Android). Non ho avuto la possibilità di testare, ma sembra l'approccio giusto. Un plug-in effettivo sarebbe più semplice (come la registrazione di uno schema URL), ma penso di poter usare un hook per fare le modifiche plist fatte da uno script. AFAIK, il "File Opener Plugin" NON è pertinente, cioè consentirebbe alla mia app di dire al sistema operativo di aprire il file di qualcun'altro, mentre questa domanda è solo per assicurarsi che un'altra app (come la posta elettronica) possa inviare il file alla mia app . –

+0

Ciao, Come posso ottenere l'indirizzo del file sulla webapp stessa? (un utente premuto si apre con una foto e ora viene trasferito alla mia app, quali sono le prospettive?) –

+0

Chiunque è riuscito a trovare il passo successivo per prendere il file? @DanielGolub? –

0

controllare questo link. Per quanto riguarda Let'sRefactor è corretto tranne per fileopener, nell'intento è necessario identificare quale funzione chiamare (in nativo ovviamente) quando un utente apre il file con la propria app. Tutto è spiegato nel link sopra.

Problemi correlati