2011-08-13 17 views
13

Tengo una aplicación que a veces se vincula con imdb. Puedo hacer esto con http://m.imdb.com/find o si está disponible imdb:///find. Mi problema es que no puedo encontrar una manera de verificar si el imdb:// está disponible antes de que sea demasiado tarde.Comprueba si el intento uri está disponible

Como el usuario hace clic en el enlace, no puedo ver la excepción android.content.ActivityNotFoundException.

¿Me falta algo obvio?


Solución:

Por sugerencia de inazaruk ahora estoy usando el código siguientes aparatos:

public static boolean isUriAvailable(Context context, String uri) { 
    Intent test = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
    return context.getPackageManager().resolveActivity(test, 0) != null; 
} 

El método debe ser llamado con un URI directo a lo que está solicitando, al igual imdb:///find en lugar de solo imdb://.

+0

¿Es posible obtener datos de la actividad imdb? Quiero decir, podría ser genial obtener, por ejemplo, la clasificación de la película, o algo más. –

Respuesta

14

Puede usar resolveActivity() para detectar si hay algún Activity en el sistema capaz de manejar su intento. Por supuesto, debe construir la intención que imita el clic "uri". Eso podría hacerse usando la función Intent.setData(), aunque no lo probé/verifiqué yo mismo.

+0

Intenté 'Intent test = new Intent (Intent.ACTION_VIEW, Uri.parse (" imdb: // find "));' 'getPackageManager(). ResolveActivity (prueba, 0);', pero ni siquiera se obtuvo una mención en el registro adb. –

+0

Puede que no se mencione en los registros, depende de la implementación para decidir. Sin embargo, puede agregar sus propios registros. Simplemente imprima la información devuelta en la instancia 'ResolveInfo' de' resolveActivity() 'usted mismo. – inazaruk

+0

Gracias, pensé que iba a arrojar una excepción. Funciona de maravilla. –

0

A continuación trabajó para mí:

Intent intent = new Intent(); 
    intent.setAction("android.intent.action.VIEW"); 
    Uri uri = Uri.parse("imdb:///title/tt1457767/"); 
    intent.setData(uri); 
    this.getActivity().startActivity(intent); 

Puede reemplazar cadena en Uri.parse(""); con cualquiera de las siguientes:

  imdb:///name/<nameID> 
      imdb:///find?q=<search_query> 
      imdb:///title/<titleID> 
      imdb:///boxoffice 
      imdb:///name/<nameID> 
      imdb:///find?q=toystory 
Cuestiones relacionadas