Android enviar imagen con teclado
Estoy tratando de implementar una aplicación de teclado que debe ser capaz de enviar imágenes a la actividad actual (WhatsApp, aplicación de mensajería, etc).
¿Hay alguna manera de lograrlo? Por supuesto que se limitaría a las aplicaciones que aceptan imágenes, pero me pregunto cuál es el mejor enfoque.
- ¿Por qué el teclado virtual de Android no responde a EditText?
- Cambiar el diseño del teclado dinámicamente
- Retener soft-input / IME state en el cambio de orientación
- Android: ScrollView no se desplaza con el teclado fuera
- ¿Por qué el teclado virtual muestra o no cuando se inicia una actividad?
Intentado usar un StringBuilder con un ImageSpan pero no podría conseguirlo trabajar. Me preguntaba si había una mejor manera. Usando Intents tal vez?
- ¿Puede Android WebView HTML influenciar las características del teclado o del teclado?
- ¿Cómo mover el layoutFragment cuando el teclado suave se muestra en android?
- Establecer FAB (botón de acción flotante) encima del teclado
- Cambiar el teclado Android L introduzca el color de la tecla
- ¿Cómo mostrar el teclado suave en Android Things?
- Android: AutoCompleteTextView ocultar teclado virtual
- Android EditText, teclado suave mostrar / ocultar el evento?
- Android El teclado suave flotará solo un diseño específico
Por último logrado esto mediante el envío de Intents a la aplicación de primer plano, pero esto tiene limitaciones: las aplicaciones de mensajería por lo general requieren para seleccionar la conversación, que rompe el flujo de usuario y agrega un paso innecesario (a menos que exponga una forma de enviar la intención a un chat específico) .
Esto se puede lograr de la siguiente manera:
Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); sendIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); sendIntent.setPackage(getCurrentAppPackage(context, editorInfo)); return sendIntent;
Donde getCurrentAppPackage(...)
es un método que devuelve la actividad de primer plano dada un Context
y un EditorInfo
, que puede obtener de su implementación IME cuando se enlaza a un campo de entrada.
public String getCurrentAppPackage(Context context, EditorInfo info) { if(info != null && info.packageName != null) { return info.packageName; } final PackageManager pm = context.getPackageManager(); //Get the Activity Manager Object ActivityManager aManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); //Get the list of running Applications List<ActivityManager.RunningAppProcessInfo> rapInfoList = aManager.getRunningAppProcesses(); //Iterate all running apps to get their details for (ActivityManager.RunningAppProcessInfo rapInfo : rapInfoList) { //error getting package name for this process so move on if (rapInfo.pkgList.length == 0) { Log.i("DISCARDED PACKAGE", rapInfo.processName); continue; } try { PackageInfo pkgInfo = pm.getPackageInfo(rapInfo.pkgList[0], PackageManager.GET_ACTIVITIES); return pkgInfo.packageName; } catch (PackageManager.NameNotFoundException e) { // Keep iterating } } return null; }
Actualización : La API de contenido de confirmación se agregó en el nivel 25 de API (y la biblioteca de soporte hace que funcione desde la API 13). Más información aquí: https://developer.android.com/preview/image-keyboard.html Hasta que las aplicaciones comiencen a implementarlo, el método anterior puede usarse como fallback.
- Cómo ocultar la barra de herramientas después de colapsar mientras que recyclerView desplazamiento hacia abajo
- No se pudo conectar con el cliente de API de Google