Ham*_*sir 5 android try-catch nullpointerexception android-package-managers activitynotfoundexception
我正在尝试使用软件包名称打开某些应用程序,为此我使用了以下代码:
public void openAppHavingPackageName(String packageName, String appName) {
try {
Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试打开手机中安装的应用程序时,它工作正常,但是当我尝试打开手机中没有的应用程序时,应用程序崩溃并出现以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference
在线上
startActivity(intent);
如您所见,我在try/catch那里有一个块,那么为什么没有捕获异常,而是运行代码导致崩溃?
NullPointerExceptiontry catch如果未在范围内隐含,则无法在块中捕获catch。这是一个运行时异常,建议避免它,而不是在try catch块中处理:
if(something != null) {
doStuff();
}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,要处理NullPointerException异常,您需要执行以下操作:
try {
Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(intent);
} catch (ActivityNotFoundException | NullPointerException e) {
Log.e(TAG, e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
但同样,不推荐这种方式。
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |