2011-12-06 11 views
5

Nella mia app, ho bisogno di usare startActivity per vedere il contenuto del file, o usare l'applicazione predefinita per aprire il determinato file, ma a volte il sistema Android potrebbe non installare l'applicazione necessaria.Come gestire ActivityNotFoundException?

La mia domanda è come gestire questa eccezione. Voglio un brindisi, non FC ..

Qualche consiglio? THX

+0

Se si vuole gestire l'eccezione quindi è possibile utilizzare try/catch e gestirlo. E per risolvere questo tipo di Eccezione devi registrare la tua attività nel file Manifest. Non è necessario registrare tutte le attività in per registrare il file, ma sì, quando si utilizza startActivity, quindi è necessario registrare l'attività. – anddev

+0

OK .. ho provato. Funziona. THX – xuyao

+0

Guarda la mia risposta modificata. Grazie .. – user370305

risposta

11

Basta semplicemente aggiungere che l'attività nel tuo file manifest ..

come,

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

EDIT:

Ora per prendere il ActivityNOtFoundException mettere il codice in,

try { 

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

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

Nota: Prestare attenzione quando si rileva questa eccezione ActivityNotFound ma non è possibile modificare il file manifest in fase di esecuzione, significa una volta che si è verificata l'eccezione e se si desidera aggiungere questo tag attività in fase di esecuzione, non è possibile.

+0

Scusate ragazzo .. Questo non è quello che mi serve. Voglio che il sistema decida quale attività eseguire. – xuyao

1

Se si desidera visualizzare errore come brindisi poi

try { 
    startActivity(intent); 

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

L'errore si verifica perché l'attività non menzionata nel file manifesto.

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

correct ~ thanks ~ – xuyao

2

Penso che la tua domanda è più: "come posso prendere un certo eccezione e impedire un incidente forza". Questo è come si fa in codice:

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? 
} 

Un avvertimento, non abusare di questo: è pericoloso "silenziosamente ingoiare" eccezioni e può rendere l'applicazione instabile e introdurre strano e difficile da eseguire il debug comportamento .

+0

Grazie, funziona per me. – xuyao

7

È possibile utilizzare il metodo resolveActivity

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