2011-12-06 25 views
5

私のアプリケーションでは、ファイルの内容を見るためにstartActivityを使う必要があります。あるいは、デフォルトのアプリケーションを使って特定のファイルを開く必要があります。しかし、アンドロイドシステムが必要なアプリケーションをインストールしないことがあります。ActivityNotFoundExceptionを処理する方法は?

私の質問は、この例外を処理する方法です。私はトースト、FCではない。

アドバイスはありますか? THX

+0

を使用することができます。そして、この種のExceptionを解決するには、あなたの活動をManifestファイルに登録する必要があります。 startActivityを使用するときは、アクティビティを登録する必要がありますが、すべてのアクティビティを登録ファイルに登録する必要はありません。 – anddev

+0

OK。私は試しました。できます。 THX – xuyao

+0

私の編集した答えを見てください。ありがとう.. – user370305

答えて

11

単に..マニフェストファイル内のような

を、そのアクティビティを追加

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

EDIT:

ActivityNOtFoundExceptionは、

にあなたのコードを入れてキャッチします
try { 

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

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

注:これをキャッチするときは注意してください。ActivityNotFound Exceptionただし、マニフェストファイルを実行時に変更できないため、例外が発生した場合、実行時にこのアクティビティタグを追加することはできません。

+0

申し訳ありません男..これは私が必要なものではありません。私はシステムにどのアクティビティを実行させるかを決定させたい。 – xuyao

1

あなたはトーストなどのエラーを表示したい場合は、

try { 
    startActivity(intent); 

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

活動がマニフェストファイルに記載されていないため、エラーが発生します。

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

正しい〜ありがとう〜 – xuyao

2

あなたの質問は、「特定の例外を捕捉して強制クラッシュを防止するにはどうすればよいですか」と思っています。

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

警告、この乱用しないでください: これは、あなたがコードでそれを行う方法である、それは「黙って飲み込む」の例外は危険だと不安定なアプリケーションを作成し、導入することができます奇妙なハード・ツー・デバッグの挙動。

+0

ありがとう、それは私のために働く。 – xuyao

7

あなたが例外を処理したい場合、あなたはそれをキャッチし、ハンドル/お試し使用することができますresolveActivity方法

if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivity(intent); 
    }else { 
     Toast.makeText(this,"No suitable app found!",Toast.LENGTH_SHORT).show(); 
    } 
関連する問題