7

設定クラスのアクティビティ アクション (さまざまな設定アクティビティの起動に使用) の大部分には、警告が表示されます。

場合によっては、一致するアクティビティが存在しない可能性があるため、これを防ぐようにしてください。

では、どうすればこれを防ぐことができますか?

try {
    final Intent i = new Intent(Settings. ACTION_WIRELESS_SETTINGS); // say
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // not sure if needed
    startActivity(i);
} catch (Exception e) { // what should I catch here 
    // I would hate to catch Throwable, but should I ?
}

たとえば、これを正しく読むと、実行時例外 (NPE) がスローされます。もっと具体的なものを使いたいのですActivityNotFoundExceptionが、それで十分ですか?

4

1 に答える 1

4

たとえば、これを正しく読むと、実行時例外 (NPE) がスローされます

いいえ、それは別の問題です。Intentクラッシュは、呼び出したアプリではなく、設定自体から発生しているため、明らかに機能しましたstartActivity()

ActivityNotFoundException のようなもっと具体的なものを使いたいのですが、それで十分ですか?

そのはず。

それが心配な場合、または単に を呼び出すのではなく積極的に取り組みたい場合はstartActivity()、まず と を使用PackageManagerしてresolveActivity()ください。が返された場合はnull、 に一致するアクティビティがないためIntent、別のことを試す必要があります。

于 2013-11-16T12:18:01.743 に答える