Estoy intentando asociar mi aplicación con la extensión. He leído documentation y somequestions sobre el problema. Pero los principales exploradores de archivos (como es file explorer, astro, file manager del software Rhythm) no pueden abrir mis archivos.Filtro de intención para exploradores de archivos comunes
Mi manifest
archivo:
<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>
Y si intento abrir el archivo de mi solicitud para el uso de código siguiente todo funciona bien (selector no se muestra):
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);
}
si trato de abrirlo Al usar el administrador de archivos de OpenIntents, todo es normal: mostró un selector largo con muchas aplicaciones y mi aplicación en la lista.
Pero si trato de abrirlo con es file explorer o Rhythm file explorer, mostró su selector personalizado (abrir como texto/imagen/video/audio). Es malo.
Y si intento abrirlo con Astro, abre el administrador de archivos de OpenIntent. También es malo.
¿Hay alguna solución al problema? ¿Quién está equivocado en tal comportamiento?
Gracias por cualquier ayuda.