0

Firefox Aurora(Android)用のWebアプリを開発しています。そして、私はファイル入力を持っています。ただし、ユーザーが入力をクリックすると、SDカードまたはファイルシステムからファイルを選択することはできず、写真、音楽、またはビデオのみを選択できます。

MOZILLA DEVELOPER NETWORKで検索しましたが、役立つものが見つかりませんでした。

私のmanifest.webbappには、デバイスストレージ権限があります。

"permissions": {
    "device-storage:sdcard":{ "access": "readonly" }
  },

ここに画像の説明を入力してください

4

4 に答える 4

1

ソース コードによると、この許可はパッケージ化された特権付きのアプリにのみ付与されます。後者は、アプリが Marketplace によって署名される必要があることも意味します。

パッケージ化されたアプリと特権アプリの種類について詳しくは、 https ://developer.mozilla.org/en-US/docs/Apps/Packaged_apps をご覧ください。

于 2013-01-07T15:38:39.167 に答える
1

現在、単にマークアップを使用していると思いますか?

device-storage:sdcard は、実際には非常に異なるユースケースのセット用です。Android 版 Firefox にはまだ実装されていません。

表示されているアプリケーションのリストは、Android Intents システムから取得した一連のアプリケーションにすぎません。ユーザーがある種のファイルブラウザアプリをインストールしている場合、そのアプリはその意図に応答してそこにポップアップする可能性があると思います。

しかしもちろん、それはアプリで信頼できるものではありません。

Android にその機能を提供するデフォルトのアプリケーションがないことに正直に驚いていますが、それがそのようなものだと思います。または、接続できるファイルピッカーの意図を取得する方法を誰かが知っていますか?

中期的には、DeviceStorage API を使用できるようになります。これにより、JS が sdcard に直接アクセスできるようになり、SD カードからファイルを選択するための独自の UI を構築できるようになります。しかし、その余分なパワーにはかなりの欠点があります。これは特権 API であるため、アプリをパッケージ化されたアプリとして作成し、CSP を使用する必要があります。また、Firefox マーケットプレイスのレビュー プロセスを経る必要があります (すべての特権アプリはコード レビューを経る必要があります)。

したがって、それはかなり遠い第二の選択肢です。

それ以外に解決策はありません。もちろん、Android のファイル ピッカーを作成できる方法があれば最高ですが、それが可能かどうかはわかりません。そして、それは間違いなくまだ実装されていません。

于 2013-01-18T09:38:30.720 に答える
0

Androidファイルマネージャーアプリ(https://play.google.com/store/search?q=file+manager&c=apps)をインストールするだけで、SDカードからファイルを選択できるようになります。これは標準のファイル入力によって自動的に処理されるため、特定の権限は必要ありません。

于 2013-02-03T08:32:59.040 に答える
0

SD カードへのアクセスは、特権アプリまたは認定アプリを介してのみ実現できます。現在、私の知る限りでは、あなたが望んでいるようなシステム メニューの統合はありません。個人的には、これが変わることを願っています。

API ドキュメント: https://developer.mozilla.org/en-US/docs/WebAPI/Device_Storage

システムのメニューを模倣した独自のメニューを作成できます。このようにして、ユーザーはシームレスな体験を得ることができ、違いはわかりません。克服できないレベルのボイラープレートではありませんが、少しボイラープレートが必要です。

SDCard 上のすべての写真を参照/列挙するための簡単なスニペット:

var storage = navigator.getDeviceStorage("sdcard");

sdcard.browse = function () {
  var pics = navigator.getDeviceStorage('pictures');

  // Let's browse all the images available
  var cursor = pics.enumerate();

  cursor.onsuccess = function () {
    var file = this.result;
    alert("File found: " + file.name);

    // Once we found a file we check if there are other results
    if (!this.done) {
      // Then we move to the next result, which call the cursor
      // success with the next file as result.
      this.continue();
    }
  }

  cursor.onerror = function () {
    alert("No files found: " + this.error);
  }
};

使用可能なストレージの読み取り、書き込み、および計算の詳細が必要な場合は、現在、空き時間に小さなラッパー ライブラリに取り組んでおり、SDCard をより簡単に操作できます (また、コールバックを処理して、他のコードとの統合を改善しています)。暇なときに、おそらくあなたを助けることができます。

于 2013-12-10T15:01:25.580 に答える