0
上執行uncaughtException現在,我試試這個。只有連接攝像頭服務失敗,請在android
MainActivity.java
Thread.setDefaultUncaughtExceptionHandler(new UncaughtException(MainActivity.this));
UncaughtException.class
public class UncaughtException implements Thread.UncaughtExceptionHandler {
private Context context;
private static Context context1;
public UncaughtException(Context ctx) {
context = ctx;
context1 = ctx;
}
public void uncaughtException(Thread t, Throwable e){
try {
StringBuilder report =new StringBuilder();
sendErrorMail(report);
} catch (Throwable ignore) {
Log.e(UncaughtException.class.getName(),
"Error while sending error e-mail", ignore);
}
}
public void sendErrorMail(final StringBuilder errorContent) {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
new Thread() {
@Override
public void run() {
Looper.prepare();
builder.setTitle("sorry.");
builder.create();
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
}
});
builder.setMessage("OoOopps, Your application has crashed");
builder.show();
Looper.loop();
}
}.start();
}
}
這個好工作。
但這一切都發生異常顯示對話框。
我想只發生`未能連接到攝像頭服務'異常,顯示對話框。
換句話說,如果我的設備沒有連接攝像頭,顯示對話框。 (不是應用程序停止消息)。
謝謝,但是,我不明白。你建議捕捉相機異常? – chohyunwook
查看更新的答案我已經添加了代碼片段 –
您應該在這種情況下始終捕獲您首先知道的異常。 UngoughtExceptionHandler更像是第二個安全網,它可以捕獲您可能已經遺忘的異常。 –