2016-05-30 5 views
0

Jetzt versuche ich dies.Nur fehlgeschlagen, um eine Verbindung zum Kamera-Service, führen Sie uncaughtException auf 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(); 
     } 
    } 

diese gute Arbeit.

aber diese alle auftreten, Ausnahme zeigt Dialog.

Ich möchte, wenn nur auftreten `scheitern, um Kamera Service 'Ausnahme zu schließen, zeigt Dialog.

mit anderen Worten, wenn mein Gerät keine Kamera anschließen, zeigt Dialog. (nicht App stop Nachricht).

Antwort

0

Sie können die Funktionalität der offenen Kamera in "try catch" -Block und beim Abfangen der Ausnahmeanzeige, die Sie anzeigen möchten, setzen.

Das Einfangen der Ausnahme in der offenen Kamera führt dazu, dass die kamerabezogene Ausnahme nicht zur Uncaught-Ausnahmeklasse weitergeleitet wird und die Warnung "oops app crash" nicht angezeigt wird.

try { 
      myCamera = Camera.open(); 

     } catch (Exception e) { 

     //Here you catch: Failed to connect to camera service and display alert 
     } 
+0

danke, aber ich verstehe nicht. Sie raten Kamera Ausnahme zu fangen? – chohyunwook

+0

Siehe aktualisierte Antwort Ich habe Code-Snippet hinzugefügt –

+0

Sie sollten in diesem Fall immer die Ausnahme fangen, die Sie zuerst kennen. Der UngoughtExceptionHandler ist mehr wie ein zweites Sicherheitsnetz, das Exceptions fangen kann, die Sie vielleicht vergessen haben. –

Verwandte Themen