Ich versuche, meine Hauptseite Aktivität zu starten, wenn eine Ausnahme ausgelöst wird. Gerade jetzt, wenn die Ausnahme auftritt, fährt die App herunter und startet von der Hauptseite. Ich möchte, dass es nahtlos zur Hauptseiten-App geht und den Benutzer nicht darauf hinweist, dass die App heruntergefahren wird. Der Fehler, den es mir gibt, ist dies:So behandeln Sie eine IOException, indem Sie eine neue Aktivität in Android starten
D/Issue with Http:: IOException
04-19 13:57:31.518 27520-27570/myapp W/System.err: java.io.FileNotFoundException: my webpage
04-19 13:57:31.518 27520-27570/myapp W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
04-19 13:57:31.518 27520-27570/myapp W/System.err: at myapp.HttpManager.MyHttpGet.httpDownloadData(MyHttpGet.java:79)
04-19 13:57:31.518 27520-27570/myapp W/System.err: at myapp.HttpManager.MyHttpGet.doInBackground(MyHttpGet.java:53)
04-19 13:57:31.518 27520-27570/myapp W/System.err: at myapp.HttpManager.MyHttpGet.doInBackground(MyHttpGet.java:31)
04-19 13:57:31.518 27520-27570/myapp W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
04-19 13:57:31.518 27520-27570/myapp W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-19 13:57:31.519 27520-27570/myapp W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
04-19 13:57:31.519 27520-27570/myapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
04-19 13:57:31.519 27520-27570/myapp W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
04-19 13:57:31.519 27520-27570/myapp W/System.err: at java.lang.Thread.run(Thread.java:818)
04-19 13:57:31.538 27520-27520/myapp D/AndroidRuntime: Shutting down VM
04-19 13:57:31.594 27520-27520/myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: myapp, PID: 27520
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
at myapp.JSON.LoginJsonParser.checkUsername(LoginJsonParser.java:41)
at myapp.LoginPage$2.onClick(LoginPage.java:128)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Das ist schön und gut für Entwickler, aber ich möchte eine neue Aktivität starten, wenn dies geschieht. Was ich Code-weise für dieses Problem habe, ist dies.
private String httpDownloadData(String myUrl)
{
String respone = null;
HttpURLConnection urlConnection = null;
try
{
URL url = new URL(myUrl);
//put in the username and pssword for parmas to send to url
//this is good for login
if (username!=null)
{
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
});
}
urlConnection = (HttpURLConnection)url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
if(inputStream != null)
{
respone = streamToString(inputStream);
inputStream.close();
}
}catch (IOException ie)
{
//ie.printStackTrace();
Log.d("Issue with Http: " , "IOException");
ie.printStackTrace();
Intent newIntent = new Intent(activity.getApplicationContext(), ECom.class);
activity.startActivity(newIntent);
}finally {
if(urlConnection != null)
{
urlConnection.disconnect();
}
}
return respone;
}
Vielen Dank für jede Hilfe mit diesem.
Gemäß Ihren Protokolldetails löst Ihre App mehr als IOException aus. Haben Sie versucht, Exception anstelle von IOException in Ihrem catch-Block zu erfassen? –
entweder catch für 'NullPointerException' oder auch' Exception' verwenden –
@VivekMishra guter Punkt Ich dachte daran, nur zu versuchen, es zu stoppen, bevor es zu meinem jsonparser kommt, aber dann erkannte ich, dass mein JSON-Parser eine Aktivität starten kann, damit es funktioniert gut, jetzt danke dir – MNM