私は自分のアプリケーションをエクステンションに関連付けようとしています。私はこの問題についてdocumentationとsomequestionsを読んだ。しかし、主要なファイルエクスプローラ(esファイルエクスプローラ、アストロ、リズムソフトウェアのファイルマネージャなど)はファイルを開くことができません。一般的なファイルエクスプローラのインテントフィルタ
マイmanifest
ファイル:
<activity android:name="com.comapping.android.map.MapActivity" android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.comap" android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" android:host="*" android:pathPattern=".*\\.comap" android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
そして、私は次のコードを使用して自分のアプリケーションからファイルを開こうとすると、すべてが正常に動作します(チューが示されていない):
String extension = "";
int dotIndex = downloadedFile.lastIndexOf('.');
if (dotIndex != -1) {
extension = downloadedFile.substring(dotIndex + 1, downloadedFile.length());
}
// create an intent
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.fromFile(new File(downloadedFile));
String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
if (type == null || type.length() == 0) {
// if there is no acceptable mime type
type = "application/octet-stream";
}
intent.setDataAndType(data, type);
// get the list of the activities which can open the file
List resolvers = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolvers.isEmpty()) {
(new AlertDialog.Builder(context)
.setMessage(R.string.AttachmentUnknownFileType)
.setNeutralButton(R.string.NeutralButtonText, null)
.create()).show();
} else {
context.startActivity(intent);
}
を私はそれを開こうとするとOpenIntentsファイルマネージャを使用するとすべてが正常です - たくさんのアプリケーションとリストの中に私のアプリがある長い選択を示しました。
しかし、私がesファイルエクスプローラまたはリズムファイルエクスプローラで開くと、そのカスタムチューザ(テキスト/画像/ビデオ/オーディオとして開く)が表示されます。これは悪いです。
私がAstroで開くと、OpenIntentのファイルマネージャが開きます。それはまた悪いです。
問題の解決方法はありますか?そのような行動には誰が間違っていますか?
ありがとうございました。