2011-04-08 18 views

Respuesta

5

Para comprobar si existe una intención intente esto:

public static boolean isIntentAvailable(Context context, String action) { 
    final PackageManager packageManager = context.getPackageManager(); 
    final Intent intent = new Intent(action); 
    List<ResolveInfo> list = 
      packageManager.queryIntentActivities(intent, 
        PackageManager.MATCH_DEFAULT_ONLY); 
    return list.size() > 0; 
} 

(source)

Para la comprobación Twitter este fragmento:

Intent tweetIntent = new Intent(Intent.ACTION_SEND); 
tweetIntent.putExtra(Intent.EXTRA_TEXT, "Test tweet"); 
tweetIntent.setType("application/twitter"); 

(source)

+0

ok..so ¿Cuál es el contexto aquí? – AutoMEta

+2

No ... tweetIntetnt no funciona ... Entiendo esto cuando empiezo esto. complete acción usando enviar por Bluetooth, Dropbox, Gmail – AutoMEta

+0

Consulte la segunda fuente para obtener más información sobre el tweetIntent –

4

Según mis pruebas, no pude encontrar una buena manera de hacerlo, y en su lugar recurrí a una solución que no es necesariamente la "mejor práctica". Funciona solo con la aplicación oficial de Twitter y no con los demás. Esta solución fallará si la aplicación oficial cambia su API interna. Por lo tanto, utilice esta solución con precaución y conozca sus limitaciones.

Este código no está escrito de una buena manera, pero funciona. Mi consejo es cambiarlo para que no use tantos recursos.

El código comprueba si la aplicación de Twitter está instalada. Si es así, se lanza la aplicación de Twitter; de lo contrario, se inicia el navegador.

Twitter tiene el nombre de twitter (también llamado screen_name) y la identificación de twitter: no son lo mismo.

//Checking If the app is installed, according to the package name 
     Intent intent = new Intent(); 
     intent.setType("text/plain"); 
     intent.setAction(Intent.ACTION_SEND); 
     final PackageManager packageManager = getPackageManager(); 
     List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 

     for (ResolveInfo resolveInfo : list) 
     { 
      String packageName = resolveInfo.activityInfo.packageName; 

      //In case that the app is installed, lunch it. 
      if (packageName != null && packageName.equals("com.twitter.android")) 
      { 
       try 
       { 
        String formattedTwitterAddress = "twitter://user/" ; 
        Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); 
            long twitterId = <Here is the place for the twitter id> 
        browseTwitter.putExtra("user_id", twitterId); 
        startActivity(browseTwitter); 

        return; 
       } 
       catch (Exception e) 
       { 

       } 
      } 
     } 

     //If it gets here it means that the twitter app is not installed. Therefor, lunch the browser. 
     try 
     { 
          String twitterName = <Put the twitter name here> 
      String formattedTwitterAddress = "http://twitter.com/" + twitterName; 
      Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); 
      startActivity(browseTwitter); 
     } 
     catch (Exception e) 
     { 

     } 
+0

Desde la última versión de la aplicación de Twitter 3.0.0 al 9 de diciembre de 2011, la aplicación oficial de Twitter es compatible con el mecanismo de intención regular. Todo lo que necesita hacer es usar el intento regular para el navegador, en caso de que sea una dirección válida de Twitter, la aplicación oficial se registra como uno de los que resuelven esta intención. – nheimann1

5

Desde la última versión de la aplicación de Twitter 3.0.0 al 9 de diciembre de 2011, la aplicación oficial de Twitter es compatible con el mecanismo de intención habitual. Todo lo que necesita hacer es usar el intento regular para el navegador, en caso de que sea una dirección válida de Twitter la aplicación oficial esté registrada como uno de los que resuelvan esta intención.

... sólo debes copiar y pegar el comentario de goBeepit dev porque funciona para mí, el androide que piden abierta en el navegador o la aplicación de Twitter, lo que he utilizo es sólo este

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/norman784")); 
startActivity(intent); 
Cuestiones relacionadas