Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Android sms.sendTextMessage发送消息但强制关闭_Android - Fatal编程技术网

Android sms.sendTextMessage发送消息但强制关闭

Android sms.sendTextMessage发送消息但强制关闭,android,Android,编辑:解决方法是在我的toast中用Main.this代替null 我使用AsyncTask发送文本消息,它们都被成功发送(我已经测试了向自己发送50条),但当我按下send时,应用程序立即强制关闭。我使用了断点,并决定应用程序强制在“sms.sendTextMessage…”循环后关闭。这是我的main.java package com.dillonregi.spamsms; import android.app.Activity; import android.os.AsyncTask;

编辑:解决方法是在我的toast中用Main.this代替null

我使用AsyncTask发送文本消息,它们都被成功发送(我已经测试了向自己发送50条),但当我按下send时,应用程序立即强制关闭。我使用了断点,并决定应用程序强制在“sms.sendTextMessage…”循环后关闭。这是我的main.java

package com.dillonregi.spamsms;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;


public class Main extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
}

public void sms(View view) {
Toast.makeText(this, "sms()", Toast.LENGTH_SHORT).show();
final Handler mHandler = new Handler();
new AsyncTask<String, Integer, Long>() {
protected Long doInBackground(String... params){
     EditText number = (EditText) Main.this.findViewById(R.id.pnumber);
     EditText message = (EditText) Main.this.findViewById(R.id.pmessage);
     EditText hmany = (EditText) Main.this.findViewById(R.id.hmany);
     String _hmany = hmany.getText().toString();
     final String _number = number.getText().toString();
     final String _message = message.getText().toString();
     final int xtime = Integer.parseInt(_hmany);

     mHandler.post(new Runnable() {
           public void run() {
     Toast.makeText(null, "number: " + _number + " message: " + _message + " xtime: " + xtime, Toast.LENGTH_LONG).show();
           }
     });

     long sentTexts = 0; 
    for (int i = 0; i < xtime; i++) {       
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(_number, null, _message, null, null);
        //send SMS's
        sentTexts += 1;
    }
    return sentTexts;
}
protected void onProgressUpdate(Integer... progress) {

}

protected void onPostExecute(Long result) {
           Toast.makeText(null, "number of texts sent will end up going here. maybe add + sentTexts after these quotes?", Toast.LENGTH_LONG).show();

}
}.execute(); }
} 
package com.dillonregi.spamms;
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.os.Handler;
导入android.telephony.smsmsmanager;
导入android.view.view;
导入android.widget.EditText;
导入android.widget.Toast;
公共类主要扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(这是“onCreate”,Toast.LENGTH_SHORT).show();
}
公共无效短信(查看){
Toast.makeText(这是“sms()”,Toast.LENGTH_SHORT).show();
最终处理程序mHandler=新处理程序();
新建异步任务(){
受保护的长doInBackground(字符串…参数){
EditText编号=(EditText)Main.this.findViewById(R.id.pnumber);
EditText消息=(EditText)Main.this.findViewById(R.id.pmessage);
EditText hmany=(EditText)Main.this.findViewById(R.id.hmany);
字符串_hmany=hmany.getText().toString();
最后一个字符串_number=number.getText().toString();
最后一个字符串_message=message.getText().toString();
final int xtime=Integer.parseInt(_hmany);
mHandler.post(新Runnable(){
公开募捐{
Toast.makeText(null,“数字:”++“数字+”消息:“++”消息+“xtime:”+xtime,Toast.LENGTH\u LONG.show();
}
});
长文本=0;
对于(inti=0;i
还有LogCat

07-15 16:09:39.152:W/dalvikvm(29508):threadid=1:线程以未捕获异常退出(组=0x40019560) 07-15 16:09:39.152:E/AndroidRuntime(29508):致命异常:主 07-15 16:09:39.152:E/AndroidRuntime(29508):java.lang.NullPointerException 07-15 16:09:39.152:E/AndroidRuntime(29508):在android.widget.Toast.(Toast.java:89) 07-15 16:09:39.152:E/AndroidRuntime(29508):在android.widget.Toast.makeText(Toast.java:231)上 07-15 16:09:39.152:E/AndroidRuntime(29508):在com.dillonregi.spamms.Main$1$1.run(Main.java:37) 07-15 16:09:39.152:E/AndroidRuntime(29508):在android.os.Handler.handleCallback(Handler.java:587)上 07-15 16:09:39.152:E/AndroidRuntime(29508):在android.os.Handler.dispatchMessage(Handler.java:92)上 07-15 16:09:39.152:E/AndroidRuntime(29508):在android.os.Looper.loop(Looper.java:130)上 07-15 16:09:39.152:E/AndroidRuntime(29508):在android.app.ActivityThread.main(ActivityThread.java:3701)上 07-15 16:09:39.152:E/AndroidRuntime(29508):位于java.lang.reflect.Method.Invokenactive(本机方法) 07-15 16:09:39.152:E/AndroidRuntime(29508):位于java.lang.reflect.Method.invoke(Method.java:507) 07-15 16:09:39.152:E/AndroidRuntime(29508):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 07-15 16:09:39.152:E/AndroidRuntime(29508):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653) 07-15 16:09:39.152:E/AndroidRuntime(29508):在dalvik.system.NativeStart.main(本机方法) 07-15 16:09:39.162:E/AndroidRuntime(29508):[Blue Error Handler]为main生成调试报告文件 07-15 16:09:39.162:E/AndroidRuntime(29508):java.lang.NullPointerException 07-15 16:09:39.162:E/AndroidRuntime(29508):在android.widget.Toast(Toast.java:89) 07-15 16:09:39.162:E/AndroidRuntime(29508):在android.widget.Toast.makeText(Toast.java:231)上 07-15 16:09:39.162:E/AndroidRuntime(29508):在com.dillonregi.spamms.Main$1$1.run(Main.java:37) 07-15 16:09:39.162:E/AndroidRuntime(29508):在android.os.Handler.handleCallback(Handler.java:587)上 07-15 16:09:39.162:E/AndroidRuntime(29508):在android.os.Handler.dispatchMessage(Handler.java:92)上 07-15 16:09:39.162:E/AndroidRuntime(29508):在android.os.Looper.loop(Looper.java:130)上 07-15 16:09:39.162:E/AndroidRuntime(29508):在android.app.ActivityThread.main(ActivityThread.java:3701)上 07-15 16:09:39.162:E/AndroidRuntime(29508):位于java.lang.reflect.Method.Invokenactive(本机方法) 07-15 16:09:39.162:E/AndroidRuntime(29508):位于java.lang.reflect.Method.invoke(Method.java:507) 07-15 16:09:39.162:E/AndroidRuntime(29508):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 07-15 16:09:39.162:E/AndroidRuntime(29508):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653) 07-15 16:09:39.162:E/AndroidRuntime(29508):在dalvik.system.NativeStart.main(本机方法)

有道理吗

Toast.makeText(null, "number: " + _number + " message: " + _message + " xtime: " + xtime, Toast.LENGTH_LONG).show();
您正在传递
null
而不是
Context

Toast.makeText(Main.this , "number: " + _number + " message: " + _message + " xtime: " + xtime, Toast.LENGTH_LONG).show();

您在
Toat.makeToast
行得到一个NullPointerException,您将
null
作为第一个参数发送到该行,上下文应该在该行中


所有的标志都指向同一个地方…

您的Logcat显示此错误:

E/AndroidRuntime(29508): java.lang.NullPointerException 07-15 16:09:39.152: 
E/AndroidRuntime(29508):在android.widget.Toast(Toast.java:89)07-15 16:09:39.152:
E/AndroidRuntime(29508):在android.widget.Toast.makeText(Toast.java:231)07-15 16:09:39.152:

因此,您的错误基本上是向Toast小部件和编译器传递了一个空指针
Toast.makeText(Main.this, "number of texts sent will end up going here. maybe add" + sentTexts + "after these quotes?", Toast.LENGTH_LONG).show();