最近、デバイスのカメラを切断したとき。最初nullpointerException
アンドロイドでUnHandledExceptionHandlerを使用するには?
起こらないが、アプリ起動しない、nullpointerException
はそう、私が使用私はこれを試してみてくださいUnhandledExceptionHandler
に考える起こります。 私はカメラデバイスなしで、アプリがうまく実行したいです。
MainActivity.class
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String nameOfFrontFacingDevice = VideoCapturerAndroid.getNameOfFrontFacingDevice();
VideoCapturerAndroid capturer = VideoCapturerAndroid.create(nameOfFrontFacingDevice);
if (capturer == null || capturer.equals("") == true) {
Thread.setDefaultUncaughtExceptionHandler(new UnhandledExceptionHandler(this));
throw new NullPointerException();
}
UnhandledExceptionHandler.class
public class UnhandledExceptionHandler implements Thread.UncaughtExceptionHandler {
private static final String TAG = "UnUnHandler";
private final Activity activity;
public UnhandledExceptionHandler(final Activity activity) {
this.activity = activity;
}
public void uncaughtException(Thread unusedThread, final Throwable e) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
String title = "Fatal error: " + getTopLevelCauseMessage(e);
String msg = getRecursiveStackTrace(e);
TextView errorView = new TextView(UnhandledExceptionHandler.this.activity);
errorView.setText(msg);
errorView.setTextSize(2, 8.0F);
ScrollView scrollingContainer = new ScrollView(UnhandledExceptionHandler.this.activity);
scrollingContainer.addView(errorView);
OnClickListener listner = new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
System.exit(1);
}
};
Builder builder = new Builder(UnhandledExceptionHandler.this.activity);
builder.setTitle(title).setView(scrollingContainer).setPositiveButton("Exit", listner).show();
}
});
}
private static String getTopLevelCauseMessage(Throwable t) {
Throwable topLevelCause = t;
while (topLevelCause.getCause() != null) {
topLevelCause = topLevelCause.getCause();
}
return topLevelCause.getMessage();
}
private static String getRecursiveStackTrace(Throwable t) {
StringWriter writer = new StringWriter();
t.printStackTrace(new PrintWriter(writer));
return writer.toString();
}
}
このダイアログが表示されません。 UnhandledExceptionHandlerの使用方法 ?
おかげで、私はカメラデバイスなしで欲しい結果として、アプリがそのように死亡していない、私は 'unhandledExceptionHandlerをしたいです' – chohyunwook