質問:
アプリケーションでファイルとURL拡張子を無条件に開くにはどうすればよいですか?
intent-filter
どれも実際には意味をなさないので、私は自分のセットアップで終わりです。path
私の最終目標は、特定の拡張子で終わるものをすべて開くことです。例として、目標の拡張子として「.riley」を選択しましょう。
私のベース`intent-filter`
<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:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.riley" />
</intent-filter>
file
これは現在、およびから開くように機能しますcontent
。
問題#1:pathPattern
data
手始めに、私が設定したように、パラメータpathPattern
が何もしないように見えます:
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.riley" />
..しかし、 andスキームの下で「.riley」で終わらないパスでIntent
sを開くことはできます。Uri
file
content
これを使用してアプリケーションが開いたパスの例は次のintent-filter
とおりです。
Path: /storage/sdcard0/Download/MyApp.apk
Path: /messagesByAccount/1
「パス:」は、わかりやすくするためにログに追加したものです。1つ目はスキームの下のGmailからのものfile
で、2つ目はスキームの下のgtalkからのものですcontent
。それを考えると、私はすでにどのように機能するかについて混乱していますintent-filters
。
とスキームpathPattern
では無視されています。file
content
問題#2:ブラウザで開く
アプリケーションでブラウザから「.riley」拡張子を開こうとしましたが、リダイレクトリンクにMIMEタイプがないため、パターンmimeType
から値を削除しました( MIMEタイプがないため、以前に使用していました)。一貫性があります)そしてそれは私がURLをリダイレクトすることからうまく開くことを可能にしました。data
android:mimeType="*/*"
この問題は、ブラウザから直接「.riley」 URL(例:http ://thisisnotarealdomainname.com/myfile.riley)を開こうとしたときに、アプリケーションから開くオプションがなくなったときに発生しました。mimeType
パターンに値を追加するdata
と、直接URLから開くことができました。
直接URLと間接URLのintent-filter
両方を開くことはできません。
問題#3:スキーム
さまざまな種類のスキーム(http,
ファイル,
コンテンツ), but as soon as I remove
スキームaltogether, it disqualifies my application from opening the
http scheme and when I specify
Scheme = "*" , it disqualifies my application from opening ANY scheme. I've also tried adding more
data`パターンなど)から開くことができるようにしたいと思いますが、1つだけが有効になっているように感じますが、そうではありません。助けてください。
したがって、指定するhttp
とは可能になりますがhttp
、明らかに、無効化を指定しないか、file
または指定しないことは許可されていません。content
scheme
http
私はすべての異なるスキームから開くことはできません。
繰り返しになりますが、これらの複雑さを考慮して、アプリケーションでファイルとURL拡張子を無条件に開くにはどうすればよいですか?