1

私はこの問題で数日間壁にぶつかっていますが、何が間違っているのか(またはこれが何らかのバグである場合)、一生理解できません。

私はカスタム Mac アプリケーションを持っています (問題があれば Java で)。基本的に、特定の種類のドキュメント バンドルを取得し、それに対して何らかの処理を行い、結果をサーバーに送信します。ユーザーが「ファイル」をアプリケーションのドックアイコンにドロップするという1つのユースケースを除いて、すべてが機能しています。

私がこれまでに読んだことはすべて、Mac Dock アイコンにドロップすると、Finder が使用するものと同じ Launch Services を使用することを示しているようです。それでも、Applications ディレクトリを開いてそこにアプリケーションをドロップすることはできますが、Dock にアプリケーション アイコンをドロップしても何も起こりません。

だから、私がこれまでに試したことのいくつかの詳細:

  • アプリは、*.foo 拡張子を持つドキュメントを処理します。これはドキュメント バンドルです (つまり、opt-click で [パッケージの内容を表示] オプションが表示されます)。
  • ドキュメントには、UTI com.apple.package および public.composite-content に準拠する org.example.foo の UTI があります (所有者アプリケーションの Info.plist エクスポート タイプ UTI キーからコピーされたすべての情報)。
  • Info.plist は、インポートされたタイプの UTI (UTImportedTypeDeclarations キー) でこのドキュメント タイプを宣言します。
  • また、Info.plist では、UTI が Document Types (CFBundleDocumentTypes キー) で宣言されています。
    • CFBundleTypeExtensions には「foo」が含まれます
    • 「****」に設定された CFBundleTypeOSTypes

Dock アイコンでの Cmd-Opt-drop (ドロップを強制する) は何もしません。Finder でのドロップは、期待どおりに機能します。したがって、これは特に Dock アイコンをドロップする際の問題のようです。

何を変更するかについてのアイデアはありますか?

4

1 に答える 1

2

マズは問題の核心を突いたと思います。アプリケーションは Mac OS X 10.5 または 10.6 で実行するように設定されており、私が使用している Java API (com.apple.eawt.*) は廃止されたようであり、代替品はありません。これは、ほとんどが機能する理由を説明している可能性がありますが、迷惑な方法では機能しません.

実際の解決策では、JavaApplicationStub 実行可能ファイルをリバース エンジニアリングして新しい API と連携させ、適切なイベントがアプリケーションに渡されるように JNI フックを作成する必要があるようです。

于 2010-07-01T21:06:29.007 に答える