Crear un "Tweet este botón" para compartir información sólo en Twitter no es tan fácil
Para mi aplicación, muestro un twitterfeed dentro de la pantalla principal. Lo que es cool es que la gente puede seguir la información de Twitter sobre la compañía de tren de mi país sin tener una cuenta de Twitter.
- Cómo aprender qué versión de la aplicación instalada mediante programación en android
- Integración de Twitter con oauth y twitter4j
- ¿Cómo enviar solicitudes de proxy a api.twitter.com incluyendo certificados SSL?
- ¿Necesito aplicaciones separadas de Twitter para la integración con aplicaciones de iOS y Android + Web?
- Selector de intenciones de participación de Android
Lo que me gustaría hacer es reaccionar cuando el usuario haga clic en un elemento y luego le permiten responder / RT. Si el usuario no tiene una aplicación de twitter instalada, entonces no debería pasar nada (tal vez un brindis)
He intentado esta acción:
Intent tweetIntent = new Intent(Intent.ACTION_SEND); tweetIntent.putExtra(Intent.EXTRA_TEXT, "Test; please ignore"); tweetIntent.setType("application/twitter");
Pero parecen abrir también correo electrónico, Gmail y otras aplicaciones inútiles.
¿Hay una manera de filtrar esa lista y mantener sólo las aplicaciones de Twitter (Twitter, Twydroid, Plume, Twicca, etc.)
Muchas gracias por cualquier sugerencia.
Editar: Mi solución actual, que no me gusta en absoluto:
public Intent findTwitterClient() { final String[] twitterApps = { // package // name "com.twitter.android", // official "com.levelup.touiteur", // Plume "com.twidroid", // twidroyd "com.handmark.tweetcaster", // "com.thedeck.android" // }; Intent tweetIntent = new Intent(); tweetIntent.setType("text/plain"); final PackageManager packageManager = getPackageManager(); List<resolveinfo> list = packageManager.queryIntentActivities( tweetIntent, PackageManager.MATCH_DEFAULT_ONLY); for (int i = 0; i <twitterApps.length; i++) { for (ResolveInfo resolveInfo : list) { String p = resolveInfo.activityInfo.packageName; if (p != null && p.startsWith(twitterApps[i])) { tweetIntent.setPackage(p); return tweetIntent; } } } return null; }
- Cómo subir imagen a twitter con android sdk
- Cómo migrar la API de Twitter de v1 a v1.1?
- Android - ¿Cómo puedo detectar si el usuario ha decidido compartir con Facebook o Twitter con la intención?
- Cómo recuperar Twitter y Facebook Autenticación y Token a través de las clases de Administrador de cuentas de Android
- Obtener tweets públicos Twitter API 1.1
- Accesos directos a las aplicaciones de Facebook y Twitter publican las páginas
- ¿Comparte URL a Facebook, Twitter y correo electrónico en Android?
- Biblioteca común en android para compartir en las redes sociales?
No hay API oficial de twitter en android, te sugiero que implementes tu propio con algo como twitter4j.
http://twitter4j.org/en/index.html
Usted debe saber el ID de usuario y tweet ID, etc, etc, cuando se hace clic, entonces usted puede utilizar twitter4j como este:
Twitter twitter = new TwitterFactory().getInstance(); twitter.updateStatus(new StatusUpdate("@USERNAME").inReplyToStatusId(STATUSID));
No estoy seguro si ya estás usando twitter4j o no, si no te sugiero que lo hagas como consultando por tweets es muy fácil.
También necesitas autenticación dentro de tu aplicación si usas twitter4j, es bastante simple pero no entraré en él ya que tendrás que abrir una ventana de autenticación, etc. Hay un ejemplo en http://twitter4j.org/en/ Code-examples.html
Si no quieres ir a la ruta twitter4j, por desgracia tu manera es la única manera que conozco. Simplemente utilice el gestor de paquetes para comprobar si existen y, de lo contrario, notifique al usuario.
- Comunicación multihilo: ¿qué tan bueno es el uso de variables atómicas como AtomicInteger? ¿Por qué no hay AtomicFloat?
- Referencia de intenciones de Google Play para Google