/**
* Get the apk path of this application.
* @param context any context (e.g. an Activity or a Service)
* @return full apk file path, or null if an exception happened (it should not happen)
*/
public static String getApkName(Context context) {
String packageName = context.getPackageName();
PackageManager pm = context.getPackageManager();
try {
ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
String apk = ai.publicSourceDir;
return apk;
} catch (Throwable x) {
}
return null;
}
編集この場合
の防御catch (Throwable x)
。最初は、 Checked Exceptions が悪であることがよく知られています。次に、Android の将来のバージョンで何が起こるかを予測することはできません。チェックされた例外をランタイム例外にラップして再スローする傾向がすでにあります。(そして、過去には考えられなかった愚かなことをする傾向。) エラーの子に関しては、まあ、パッケージ マネージャーが実行中の apk を見つけられない場合、エラーがスローされるような問題です。おそらく最後の行は
} catch (Throwable x) {
return null;
}
しかし、テストせずに作業コードを変更することはありません。