2011-12-06 14 views
5

En mi aplicación, necesito utilizar startActivity para ver el contenido del archivo, o utilizar la aplicación predeterminada para abrir el archivo determinado, pero a veces el sistema Android puede no instalar la aplicación que se necesita.Cómo manejar la ActivityNotFoundException?

Mi pregunta es cómo manejar esta excepción. Quiero un brindis, no FC ..

¿Algún consejo? THX

+0

Si desea controlar la excepción, puede utilizar try/catch y manejarlo. Y para resolver este tipo de Excepción, debe registrar su actividad en el archivo Manifiesto. No es necesario registrar todas las actividades para registrar el archivo, pero sí cuando usa startActivity, entonces tiene que registrar su actividad. – anddev

+0

OK ... Lo intenté. Funciona. THX – xuyao

+0

Mira mi respuesta editada. Gracias .. – user370305

Respuesta

11

Simplemente añadir que la actividad en el archivo de manifiesto ..

como,

<activity android:name=".ActivityName" 
        android:label="@string/app_name"> 
     </activity> 

EDIT:

Ahora para coger el ActivityNOtFoundException poner su código en,

try { 

    // Your startActivity code wich throws exception 
} catch (ActivityNotFoundException activityNotFound) { 

    // Now, You can catch the exception here and do what you want 
} 

Nota: tenga cuidado cuando vea ActivityNotFound Excepción pero no puede modificar el archivo de manifiesto para ejecutar el tiempo, significa que una vez que encontró la excepción y desea agregar esa etiqueta de actividad en tiempo de ejecución, no puede.

+0

Lo siento chico ... Esto no es lo que necesito. Quiero que el sistema decida qué actividad ejecutar. – xuyao

1

Si desea mostrar el error como una tostada a continuación

try { 
    startActivity(intent); 

} catch (ActivityNotFoundException e) { 
    // TODO: handle exception 
    //Show Toast... 
} 

El error se produce porque la actividad no se menciona en el archivo de manifiesto.

<activity android:name=".yourActivity" 
     android:label="@string/app_name"> 
</activity> 
+0

correcto ~ gracias ~ – xuyao

2

Creo que su pregunta es más: "cómo puedo detectar una cierta excepción y evitar un choque de fuerza". Así es como se hace en código:

try { 
    // here is your code that can potentially throw the exception and the force crash 
} catch (ActivityNotFoundException activityNotFound) { 
    Toast.makeText(this, "your error message", Toast.LENGTH_SHORT).show(); 
    // maybe also log the exception, for future debugging? 
} 

Una advertencia, no abusar de esto: es peligroso "silencio tragar" excepciones y puede hacer que su aplicación inestable e introducir raro y difícil de depurar el comportamiento .

+0

Gracias, funciona para mí. – xuyao

7

Puede utilizar resolveActivity método

if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivity(intent); 
    }else { 
     Toast.makeText(this,"No suitable app found!",Toast.LENGTH_SHORT).show(); 
    } 
Cuestiones relacionadas