パッケージ名を使用して特定のアプリを開こうとしています。そのために、次のコードを使用しています。
public void openAppHavingPackageName(String packageName, String appName) {
try {
Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, e.getMessage());
}
}
携帯電話にインストールされているアプリを開こうとすると正常に動作しますが、携帯電話にないアプリを開こうとすると、アプリがクラッシュして次のエラーが発生します。
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference
ライン上
startActivity(intent);
ご覧のとおり、try/catchそこにブロックがあるのに、なぜ例外が追いつかず、代わりにコードが実行されてクラッシュするのでしょうか?