問題タブ [fileprovider]
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.
macos - macOS ファイル プロバイダー拡張機能を有効にしてデバッグする方法を教えてください。
ファイルプロバイダー拡張子を使用して、macOS Big Sur 11.2.2 で Xcode 12.5 Beta 3 を使用してベアボーンアプリを構築しようとしています。Xcode のベータ版を使用するのは、以前のバージョンではファイル プロバイダー拡張機能のテンプレートが提供されていないためです ( GitHub のサンプル プロジェクト)。
アプリとその拡張機能には、資格に設定された共通のアプリ グループがあり、私の個人チームと開発証明書で自動的に署名されます。
アプリと拡張機能をビルドして実行しました。しかし、私の知る限り、システム次第なので、いつロード (アン) されるかを制御できるようになりました。
観察
- ファイル プロバイダーの拡張子は、システム設定に表示されません。
- コンソール アプリは、アプリケーションが管理されているかどうかを確認する "lsd (LaunchServices)" を除いて、個別のプロジェクト名で意味のある情報を提供しません。
- 拡張機能は、アクティビティ モニターに表示されません。
- Pluginkit は拡張機能が見つかったことを報告しますが、先頭に感嘆符を追加します (実行時
pluginkit -vvvvmi SomeOrganization.SomeProduct.SomeProvider
)。
- サブシステムでシステム コンソールをフィルタリングすると
com.apple.FileProvider
、拡張機能をビルドした後にこれらのメッセージに出くわしました (この回答で説明されているように、プライベートな値を明らかにする必要がありました)。
とについて他に 2 つありますがPhotosFileProvider
、com.apple.CloudDocs.MobileDocumentsFileProvider
これは (私が推測するに) 無関係です。はPhotosFileProvider
同じ警告を報告します。上記のパスは次のように展開できます。
Domains.plist
この(バイナリ)コンテンツを含む:
問題
感嘆符の意味や実際の問題を見つける方法については何も見つかりませんでした。どうすればこれをデバッグできますか? コンソールのエラーが不審に突き出ています。ハウツーの秘密のステップのように、ドキュメントには記載されていないパズルのピースが欠けているように見えます。
参考までに: Apple Developer Forums での私の質問。
asp.net-core-3.1 - .Database FileProvider + 依存性注入 =>InvalidOperationException: 前にこのコンテキストで開始された 2 番目の操作
DB でファイルの内容をフェッチするカスタム IfileProvider を実装しました。用途の 1 つは、css を取得することです。問題は、型エラーが頻繁に発生することです
InvalidOperationException: 前の操作が完了する前に、このコンテキストで 2 番目の操作が開始されました。これは通常、異なるスレッドが DbContext の同じインスタンスを使用していることが原因です。DbContext でスレッドの問題を回避する方法の詳細については、
原点は、私のスタートアップで依存性注入を使用したことだと思います。すべてのタイプの構成を試しましたが、結果はありません。
私のファイル:
起動
データベースファイルプロバイダー
データベースファイル情報
DatabaseChangeToken
IappBuilder を DatabaseFileProvider に直接渡すことで問題を解決しました
しかし、これは最善の方法ではないと思います。
アイデアはありますか?
ありがとうございました。
android - Android 11 以降のリムーバブル マイクロ SD カード上のファイルの ContentProvider
FileProvider はマイクロ SD カードからサービスを提供できないため、独自の拡張 ContentProvider を作成する必要があります。
だから私は昔やった。そして、11未満のすべてのAndroidバージョンで正常に機能していました.
マイクロSDカードを含むデバイス全体からファイルを提供できます。
プライベートな getExternalFilesDirs()[0] と getExternalFilesDirs()[1] からも同様です。
これら 2 つのパスの両方が同じ micro-sd にあることを確認します。
彼らは奉仕することができました。
ただし、Android 11 以降のデバイスでは、HTMLViewer と Chrome は最初のパスしか処理できません。アプリ自体は、パスまたは独自のプロバイダーを使用して、常に独自のファイルを処理できます。
Android 11 以降では、ACTON_VIEW で選択され、.readLine() を使用して uri から読み取る独自のアプリは、最初のパスを処理でき、2 番目のパスで失敗しました。.readLine() を使用せずに .available() を見て、入力ストリームから直接 .read() を実行することで、自分のアプリで最終的に解決できました。
これは私が使用するプロバイダークラスです:
AndroidManifest.xml で:
ACTIEN_VIEW インテントには次の URI を使用します。(1234-5678 は、使用するマイクロ SD カードに応じて変更してください)
最初に提供アプリで uries をテストします。
次のインテントは、外部アプリを起動するために使用されます。
私の質問は次のとおりです: Android 11 および 12 で、マイクロ SD カード上のファイルの ContentProvider が、異なる場所からのファイルに対して異なる動作をするのはなぜですか?
.txt ファイルの読み取りの問題は解決できましたが、外部アプリで編集内容を保存しようとすると失敗します。
更新 (11 月 5 日):
MANAGE_EXTERNAL_STORAGE のみに続きます。ディレクトリ ツリーの奥深くにあるファイルがこの動作に悩まされるという考えが頭に浮かびました。だからコピーした
に
後者は、外部アプリによる表示と編集には問題ありません。問題は、マイクロ SD カードのアプリ固有のディレクトリにあるファイルのみです。