You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7.1 KiB

プラグイン開発者のためのメモ

これらのノートは主に Android と iOS 開発者インタ フェース ファイルのプラグインを使用してファイル システムでプラグインを書きたい人向け。

コルドバのファイル システムの Url での作業

バージョン 1.0.0 では、以来、このプラグインを含む Url を使用する cdvfile JavaScript に raw デバイス ファイル システムのパスを公開するのではなく、橋の上のすべての通信方式します。

JavaScript 側では、これはファイルと DirectoryEntry オブジェクトに HTML ファイル システムのルートを基準として、fullPath 属性があることを意味します。 あなたのプラグインの JavaScript API がファイルまたは DirectoryEntry オブジェクトを受け入れる場合を呼び出す必要があります .toURL() 橋を渡ってそれをネイティブ コードに渡す前にそのオブジェクトの。

Cdvfile に変換する://fileystem のパスに Url

ファイルシステムへの書き込みする必要があるプラグインは、実際のファイルシステムの場所に受信したファイル システム URL に変換する必要があります。ネイティブ プラットフォームによって、これを行うための複数の方法があります。

それを覚えていることが重要ですすべて cdvfile:// の Url がデバイス上の実際のファイルをマッピング可能な。 いくつかの Url は、ファイルでは表されないまたはリモート リソースを参照することができますもデバイス上の資産を参照できます。 これらの可能性のためのプラグインは、戻るときにパスに Url を変換しようとして、彼らは意味のある結果を得るかどうか常にテスト必要があります。

アンドロイド

アンドロイド, に変換する最も簡単な方法で、 cdvfile:// を使用するファイルシステムのパスに URL は org.apache.cordova.CordovaResourceApiCordovaResourceApi扱うことができるいくつかの方法は、 cdvfile:// の Url:

webView プラグイン クラス CordovaResourceApi resourceApi のメンバーである = webView.getResourceApi()。

デバイスでこのファイルを表す file:///URL を取得//ファイル Uri fileURL にマップできない場合、同じ URL は変更されません = resourceApi.remapUri(Uri.parse(cdvfileURL));

また、ファイルのプラグインを直接使用することが可能です。

インポート org.apache.cordova.file.FileUtils;
インポート org.apache.cordova.file.FileSystem;
インポート java.net.MalformedURLException;

プラグイン マネージャーからファイルのプラグインを入手してコマンド filePlugin = (FileUtils)webView.pluginManager.getPlugin("File");

それを試みるためにパスを取得 URL を指定すると、{文字列パス = filePlugin.filesystemPathForURL(cdvfileURL);} キャッチ (MalformedURLException e) {/ファイルシステムの url が認識されませんでした/}

パスから変換する、 cdvfile:// URL:

インポート org.apache.cordova.file.LocalFilesystemURL;

デバイス ・ パスの LocalFilesystemURL オブジェクトを取得//cdvfile URL として表現できない場合は null。
LocalFilesystemURL url = filePlugin.filesystemURLforLocalPath(path);
URL オブジェクトの文字列 cdvfileURL の文字列表現を取得する = url.toString();

あなたのプラグインは、ファイルを作成しをファイル オブジェクトを返す場合、ファイルのプラグインを使用します。

JavaScript を返すときに適した JSON 構造を返す//このファイルは cdvfile URL として表現できない場合は null。
JSONObject エントリ = filePlugin.getEntryForFile(file);

iOS

IOS のコルドバは同じを使用しない CordovaResourceApi アンドロイドとしての概念。IOS では、Url とファイルシステムのパスの間を変換するファイル プラグインを使用する必要があります。

URL の文字列 CDVFilesystemURL * url から CDVFilesystem URL オブジェクトを取得 [CDVFilesystemURL fileSystemURLWithString:cdvfileURL];
ファイル NSString * パスにマップできない場合は nil または URL オブジェクトのパスを取得 [filePlugin filesystemPathForURL:url];


デバイス ・ パスの CDVFilesystem の URL オブジェクトを取得または//cdvfile URL として表現できない場合は nil です。
CDVFilesystemURL の url = [filePlugin fileSystemURLforLocalPath:path];
URL オブジェクト NSString * cdvfileURL の文字列表現を取得する = [url absoluteString];

あなたのプラグインは、ファイルを作成しをファイル オブジェクトを返す場合、ファイルのプラグインを使用します。

デバイス ・ パスの CDVFilesystem の URL オブジェクトを取得または//cdvfile URL として表現できない場合は nil です。
CDVFilesystemURL の url = [filePlugin fileSystemURLforLocalPath:path];
JavaScript NSDictionary * エントリに戻る構造を得る = [filePlugin makeEntryForLocalURL:url]

Java スクリプトの設定

Java スクリプトの設定を取得するに、 cdvfile:// ファイルまたは DirectoryEntry オブジェクトからの URL を呼び出して、 .toURL() それを。

var cdvfileURL = entry.toURL();

プラグイン応答ハンドラーに返された FileEntry 構造体の実際のエントリ オブジェクトを変換する、ハンドラーのコード ファイルのプラグインをインポート、新しいオブジェクトを作成します。

適切なエントリ オブジェクト var エントリを作成します。
場合 (entryStruct.isDirectory) {エントリ = 新しい DirectoryEntry (entryStruct.name、entryStruct.fullPath、新しい FileSystem(entryStruct.filesystemName));} 他 {エントリ = 新しいファイル (entryStruct.name、entryStruct.fullPath、新しい FileSystem(entryStruct.filesystemName));}