Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android异步任务邮件发送错误_Java_Android_Email_Android Asynctask_Jakarta Mail - Fatal编程技术网

Java android异步任务邮件发送错误

Java android异步任务邮件发送错误,java,android,email,android-asynctask,jakarta-mail,Java,Android,Email,Android Asynctask,Jakarta Mail,我对异步任务有问题。我想发送邮件,但当我使用AsyncTasker时,我会使用“ 带活页夹﹕ 从活页夹存根捕获到运行时异常 实施 java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序。“ 错误 对于发送邮件,我使用以下方法: class MailSender extends AsyncTask<Void, Integer, Integer> { /* (non-Javadoc)

我对异步任务有问题。我想发送邮件,但当我使用AsyncTasker时,我会使用“

带活页夹﹕ 从活页夹存根捕获到运行时异常 实施 java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序。“

错误

对于发送邮件,我使用以下方法:

     class MailSender extends AsyncTask<Void, Integer, Integer>
    {
        /* (non-Javadoc)
         * @see android.os.AsyncTask#onPreExecute()
         */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        /* (non-Javadoc)
         * @see android.os.AsyncTask#doInBackground(Params[])
         */
            @Override
            protected Integer doInBackground(Void... params) {
                okuayar();
                Mail m = new Mail(email, sifre);

            String toAddresses = gmailler;
            m.setToAddresses(toAddresses);
            m.setFromAddress("zekikelce39@gmail.com");
            m.setMailSubject("resim."+getFormattedDate(new Date()));
            m.setMailBody("Yeni resim çekildi.Tarihinde: "+getFormattedDate(new Date()));
/*
                try {
                    ZipUtility.zip(filename,"/mnt/sdcard/res.zip");
                } catch (IOException e1) {
                    Log.e("MailApp", "Could not zip folder", e1);
                }*/
            try {
               m.addAttachment(zipName);
               // m.addAttachment(filename);
                if (m.send()) {
                   Toast.makeText(MainActivity.this,"Message sent",Toast.LENGTH_LONG);
                    System.out.println("Message sent");
                    return 1;
                } else {
                    Toast.makeText(MainActivity.this,"Mail Yollandı",Toast.LENGTH_LONG);
                    return 2;
                }

            } catch (Exception e) {
                Log.e("MailApp", "Mail Yollandı", e);
                return 3;
            }

        }
        @Override
        protected void onPostExecute(Integer result) {
            super.onPostExecute(result);
            if(result==1)
                Toast.makeText(MainActivity.this,
                        "Email was sent successfully.", Toast.LENGTH_LONG)
                        .show();
            else if(result==2)
                Toast.makeText(MainActivity.this,
                        "Email was not sent.", Toast.LENGTH_LONG).show();
            else if(result==3)
                Toast.makeText(MainActivity.this,
                        "There was a problem sending the email.",
                        Toast.LENGTH_LONG).show();

        }
    }
然后,为了将zip文件发送到邮件,我使用:

private void mailleriyolla(){
    File file = new File(zipName);
    if(file.exists())
    {
        new MailSender().execute();
}
拉链功能良好,没有问题。但当我将Send函数与asynctask一起使用时,我得到了一个错误。 还有logcat

12-26 21:02:38.638  26745-26763/net.dheera.wearcamera W/Binder﹕ Caught a RuntimeException from the binder stub implementation.
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
            at android.os.Handler.<init>(Handler.java:200)
            at android.os.Handler.<init>(Handler.java:114)
            at android.app.Dialog.<init>(Dialog.java:108)
            at android.app.AlertDialog.<init>(AlertDialog.java:125)
            at android.app.AlertDialog.<init>(AlertDialog.java:109)
            at android.app.ProgressDialog.<init>(ProgressDialog.java:77)
            at net.dheera.wearcamera.MainActivity$MailSender.onPreExecute(MainActivity.java:565)
            at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
            at android.os.AsyncTask.execute(AsyncTask.java:535)
            at net.dheera.wearcamera.MainActivity.mailleriyolla(MainActivity.java:122)
            at net.dheera.wearcamera.MainActivity.access$200(MainActivity.java:52)
            at net.dheera.wearcamera.MainActivity$1.onMessageReceived(MainActivity.java:110)
            at com.google.android.gms.wearable.internal.ax.a(Unknown Source)
            at com.google.android.gms.wearable.internal.ae$a.onTransact(Unknown Source)
            at android.os.Binder.execTransact(Binder.java:446)
12-26 21:02:38.638 26745-26763/net.dheera.wearcamera带活页夹﹕ 从活页夹存根实现捕获到运行时异常。
java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
android.os.Handler.(Handler.java:200)
位于android.os.Handler.(Handler.java:114)
在android.app.Dialog.(Dialog.java:108)
在android.app.AlertDialog.(AlertDialog.java:125)
在android.app.AlertDialog.(AlertDialog.java:109)
在android.app.ProgressDialog.(ProgressDialog.java:77)
位于net.dheera.wearcamera.MainActivity$mailssender.onPreExecute(MainActivity.java:565)
位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
在android.os.AsyncTask.execute(AsyncTask.java:535)
位于net.dheera.wearcamera.MainActivity.mailleriyolla(MainActivity.java:122)
net.dheera.wearcamera.MainActivity.access$200(MainActivity.java:52)
net.dheera.wearcamera.MainActivity$1.onMessageReceived(MainActivity.java:110)
位于com.google.android.gms.wearable.internal.ax.a(未知来源)
位于com.google.android.gms.wearable.internal.ae$a.onTransact(未知来源)
位于android.os.Binder.execTransact(Binder.java:446)

我想你的问题在于:

try {
           m.addAttachment(zipName);
           // m.addAttachment(filename);
            if (m.send()) {
               Toast.makeText(MainActivity.this,"Message sent",Toast.LENGTH_LONG);
                System.out.println("Message sent");
                return 1;
            } else {
                Toast.makeText(MainActivity.this,"Mail Yollandı",Toast.LENGTH_LONG);
                return 2;
            }

        } catch (Exception e) {
            Log.e("MailApp", "Mail Yollandı", e);
            return 3;
        }

在这种情况下,您不能在
背景线程中使用Toast,即使您没有在那里显示它,但您正在实例化它。将
Toast.makeText
移出
doInBackground
这将清除问题

回答得好。简而言之,您不应该在doInBackground中执行任何UI。
try {
           m.addAttachment(zipName);
           // m.addAttachment(filename);
            if (m.send()) {
               Toast.makeText(MainActivity.this,"Message sent",Toast.LENGTH_LONG);
                System.out.println("Message sent");
                return 1;
            } else {
                Toast.makeText(MainActivity.this,"Mail Yollandı",Toast.LENGTH_LONG);
                return 2;
            }

        } catch (Exception e) {
            Log.e("MailApp", "Mail Yollandı", e);
            return 3;
        }