問題タブ [document-provider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Document Provider iOS アプリ拡張機能で回転を無効にする
アプリの拡張機能を作成していますが、向きを縦向きのみにしたいと考えています。アプリの拡張機能が読み込まれた後、横向きに拡張しているアプリの回転を防ぐことはできますか?
これらのメソッドを拡張機能の UIViewController に追加しようとしましたが、何も変更されていないようです:
ios - IOS Document Provider に「このファイル タイプはサポートされていません」と表示される
具体的には、Web ページがアプリ「Flyskyhy」のファイルに直接アクセスできるようにするために、iOS ドキュメント プロバイダー拡張機能を実装しようとしています。私は通常のドキュメントを読み、XCode の標準的な方法を使用して DocumentProvider Extension ターゲットをプロジェクトに追加しました。そのデフォルトの実装ではまだ何も変更していませんが、最初に試してみたかったのです。拡張機能は、メールからアクセスしたときに表示され、正しく呼び出されます ([添付ファイルの追加] アクションを介して)。
ただし、Safari の Web ページからアクセスしようとすると、拡張機能がソースのデフォルト リストに表示されません。
次に、「その他」を押すと、「ファイルの種類をサポートしていません」というテキストが表示されます。
何が起こっているのか、そしてこれを機能させるために何ができるかを誰かが知っていますか?
編集:
Document Provider API は呼び出されないため、Info.plist
. 詳細については、次のとおりです。
android - MTP を使用した Android Storage Access Framework / DocumentProvider でディレクトリ階層を通過する際の問題
更新: 私の最初の質問は誤解を招く可能性があるので、言い換えたいと思います: Android のストレージ アクセス フレームワークを介して、MTP 接続デバイスから階層ツリーをトラバースしたいです。SecurityException
サブノードは親ノードの子孫ではないというメッセージが表示されるため、これを達成できないようです。この問題を回避する方法はありますか? それとも、これは既知の問題ですか? ありがとう。
を介して Android の Storage Access Framework (SAF) を使用して、階層ツリーを介してドキュメントをトラバースしてアクセスしようとする Android アプリケーションを作成していますMtpDocumentsProvider
。アプリからSAFピッカーを起動し、MTP データ ソースを選択してからonActivityResult
、返さUri
れた階層をトラバースします。残念ながら、これは機能していないようです。サブフォルダーにアクセスしてそれをトラバースしようとするとすぐに、常に次のように表示されるためSecurityException
ですdocument xx is not a descendant of yy
私の質問は、 を使用してMtpDocumentProvider
、アプリから階層ツリーを正常にトラバースし、この例外を回避するにはどうすればよいですか?
具体的に言うと、私のアプリでは、まず次のメソッドを呼び出して SAF ピッカーを起動します。
Android SAF ピッカーが起動し、接続されたデバイスが MTP データ ソースとして認識されていることがわかります。上記のデータ ソースを選択すると、次のデータが取得Uri
されますonActivityResult
。
次に、返された を使用してUri
を呼び出しDocumentsContract.buildChildDocumentsUriUsingTree
て を取得し、Uri
これを使用してツリー階層を照会してアクセスできます。
外側の while ループの最初の繰り返しが成功query
しCursor
ました。問題は 2 回目の反復です。Uri
たまたま のサブノードであるを照会しようとrootUri
するSecurityException
と、ドキュメント xx は yy の子孫ではないというメッセージが表示されます。
D/MyApp(19241): ノード uri: content://com.android.mtp.documents/tree/2/document/2/children D/MyApp(19241): docId: 4、名前: DCIM、mime: vnd。 android.document/directory D/MyApp(19241): ノード uri: content://com.android.mtp.documents/tree/2/document/4/children E/DatabaseUtils(20944): パーセル E/DatabaseUtils への書き込み例外(20944): java.lang.SecurityException: ドキュメント 4 は 2 の子孫ではありません
私が間違っていることについて誰かが洞察を提供できますか? たとえば、外部ストレージ (つまり、標準の USB OTG リーダーを介して接続された SD カード) からのものなど、別のデータ ソース プロバイダーを使用すると、すべて正常に動作します。
追加情報: Nexus 6P、Android 7.1.1 でこれを実行しています。私のアプリminSdkVersion
は 19 です。
ios - ドキュメント ピッカー ... 起動に失敗しました
独自の DocumentPickerExtensionViewController を作成し、iOS の Excel アプリで開くことができるようにしたいと考えています。オフィス アプリで、[開く] -> [...その他] -> [場所] を押して、拡張機能の名前を選択します。しかし、読み込みから約 2 秒後に、「ドキュメント ピッカー ... 起動に失敗しました (0)」というダイアログがポップアップ表示されます。
グーグルでは、このエラーについて何も見つかりません。私が何を間違えたのか誰か知っていますか?