2011-10-18 10 views
5

私のアプリを特定のファイルタイプ(.stl)に関連付けるのが苦労しています。 Kevinの推奨hereは効果がありません。ファイルマネージャからファイルを起動しようとすると、私のアプリは提案されたオプションの1つではありません。アンドロイドアプリにファイルタイプを関連付けることができません

彼のコードは次のとおりです。

<activity name="com.mycompany.MyActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:mimeType="application/pdf" /> 
    </intent-filter> 
</activity> 

(私はSTLではないPDFファイルを持っている場合を除き)。私は見つけることができるこのテーマのすべてのバリエーションを試しました。

私のアプリがこの種のファイルを開くために利用可能であることをシステムが認識していないようです。私は何か愚かなことをしていますか?

ご意見ありがとうございました。

EDIT:

私は答えを持っています。基本的には、古いMIMEタイプを許可し、ファイル拡張子に依存していることを述べなければなりません。 '正しい' mimetype(application/sla)を使用しても機能しませんでした。これは動作します:私はアストロでファイルを選択すると

<data android:scheme="file" 
     android:mimeType="*/*" 
     android:pathPattern=".*\\.stl" /> 

が今私のアプリがこの種類のファイルを開くものとして提案されています。

答えて

1

私のアプリを特定のファイルタイプ(.stl)に関連付けるのに苦労しています。

一般に、Androidはファイルの拡張子を使用してタイプを指定しません。 AndroidはMIMEタイプを使用してタイプを示します。

ファイルマネージャからファイルを起動しようとすると、私のアプリは推奨されていないオプションです。

まあ、唯一の保証-固体答えは次のとおりです。

ステップ#1:.stlファイルが関連付けられていることをMIMEタイプを決定し

ステップ#2:あなたの<activity>要素にそのMIMEタイプを使用しますandroid:mimeTypeの属性

ステップ#3:彼らは.stlファイルに遭遇したときのためにあなたのMIMEタイプのサポートを実装するために一人ひとりファイルマネージャの作者を強制

もちろん、ステップ3が問題です。

Androidは、iOSなどのオペレーティングシステムのように、ユーザーから「ファイル」という概念を隠そうとしています。そのため、Androidにはファイルマネージャが組み込まれていないため、デバイスにバンドルされているデバイスが少なく、なぜOSにその概念がほとんどサポートされていないのですか。

<data>要素に<data android:scheme="file" android:pathPattern=".*\\.stl" />要素を使用して、ファイル拡張子に基づいてサポートすることはできますが、それがうまくいくかどうかはわかりません。その要素にandroid:host="*"が必要な場合もあります - Android自体はfileスキームではpathPatternを使用せず、検討しているサードパーティのコードで両方の要素を示しています。再び、私はそれがうまくいくかどうか分かりません。

+0

ありがとう@CommonsWare、Androidの「ファイル」に対する態度についての有益な情報...別の場所では、httpソースからファイルを正しく取得できるバージョンがありますが、まだAstro(ファイルマネージャ)ではありません。しかし、他のいくつかのstl読者**はそれを行うことができました - stlファイルが選択されたときに提供されます - そうする必要があります。私はまだ答えを探しています... – Barry

+0

@Baz:私の答えの最後の段落を読んでください。 – CommonsWare

+0

はい、申し訳ありませんが、それを無視するつもりはありませんでしたが、以前は成功していなかったこれらの行を試してみましたが、私は答えを見つけました! (以下)。 – Barry

関連する問題