Actualmente estoy tratando de crear un montón de aplicaciones simples de Android para reemplazar las aplicaciones predeterminadas con ellas.
Ya vi en esta publicación cómo configurar la aplicación de SMS como predeterminada:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android-dir/mms-sms" /> </intent-filter>Pero me preguntaba cómo lograr lo mismo para estas aplicaciones:
Ya noté que es casi imposible configurar la aplicación como aplicación predeterminada mediante programación sin la interacción del usuario. Este sería el objetivo principal, pero también estaría bien si el usuario puede elegir qué aplicación quiere usar como aplicación predeterminada. Pero quiero estar seguro de que las aplicaciones que enumeré anteriormente se pueden seleccionar. Entonces, mi pregunta es, ¿qué tipos de MIME debo agregar a los filtros de intención en el archivo de manifiesto de Android?
Entonces, mi pregunta es, ¿qué tipos de MIME debo agregar a los filtros de intención en el archivo de manifiesto de Android?
mimetype es solo un estándar para describir el contenido, y es el próximo procesamiento. Esto no es algo nuevo en Android, puedes consultar más información en la página Wiki de tipos de medios. Esta información sobre el atributo mimetype en la documentación de Android :
android:mimeType: un tipo de medio MIME, como image/jpeg o audio/mpeg4-generic. El subtipo puede ser el comodín de asterisco para indicar que cualquier subtipo coincide
Sin embargo, como puede ver, el prefijo vnd en un tipo MIME es un "prefijo de proveedor", lo que significa que no es un tipo MIME oficial de IETF. Por lo tanto, deberá verificar este tipo para cada aplicación. Solo algunos ejemplos, lo que tenemos a continuación.
¡Nota! Para configurar la aplicación predeterminada, primero debe especificar android.intent.action . Debido a que son las banderas principales entre la interacción del proceso, el Lanzador (por ejemplo) no tendrá mimetype , y solo las acciones de intención android.intent.action.MAIN , android.intent.action.SET_WALLPAPER .
Cámara:
<data android:mimeType="vnd.android.cursor.dir/image" /> <data android:mimeType="vnd.android.cursor.dir/video" />Imagen/Video/Audio:
<data android:mimeType="video/*" /> <data android:mimeType="video/mpeg4" /> <data android:mimeType="video/mp4" /> <data android:mimeType="video/3gp" /> ...... <data android:mimeType="image/*" /> <data android:mimeType="application/sdp" /> ...... <data android:mimeType="audio/x-mpegurl" /> <data android:mimeType="audio/mpegurl" /> <data android:mimeType="application/vnd.apple.mpegurl" /> <data android:mimeType="application/x-mpegurl" /> ....contactos:
<data android:mimeType="vnd.android.cursor.item/phone" /> <data android:mimeType="vnd.android.cursor.item/person" /> <data android:mimeType="vnd.android.cursor.dir/calls" />Navegador:
<data android:mimeType="application/xhtml+xml"/> <data android:mimeType="application/vnd.wap.xhtml+xml"/> <data android:mimeType="vnd.android.cursor.item/postal-address" /> <data android:mimeType="vnd.android.cursor.dir/bookmark"/> <data android:mimeType="vnd.android.cursor.item/download"/>Debe registrar un filtro de intención para los tipos de archivo, las acciones o las categorías para las que desea que su aplicación sea la aplicación predeterminada. El usuario podrá elegir su aplicación como la aplicación predeterminada si así lo desea.
Mire aquí para obtener más información sobre las intenciones y los filtros de intenciones.
Forzar su aplicación como la aplicación predeterminada para algo solo es posible con acceso de root.
No estoy seguro, pero al usar Intent.createChooser() obtendrá la solución, haga clic aquí