Android应用程序强制关闭 [英] Android application force close
本文介绍了Android应用程序强制关闭的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试发送短信超过100次,有没有什么办法来覆盖SMSDispatcher文本限制?
下面的错误:
三月八日至2日:34:07.927:WARN / dalvikvm(1199):主题ID = 1:螺纹退出与未捕获的异常(组= 0x4001d800)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):致命异常:主要
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):显示java.lang.NullPointerException
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在com.android.internal.telephony.SMSDispatcher.handleReachSentLimit(SMSDispatcher.java:809)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在com.android.internal.telephony.SMSDispatcher.handleMessage(SMSDispatcher.java:339)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在android.os.Handler.dispatchMessage(Handler.java:99)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在android.os.Looper.loop(Looper.java:123)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在android.app.ActivityThread.main(ActivityThread.java:4627)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在java.lang.reflect.Method.invokeNative(本机方法)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在java.lang.reflect.Method.invoke(Method.java:521)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
3月8日至2日:34:07.927:ERROR / AndroidRuntime(1199):在dalvik.system.NativeStart.main(本机方法)
下面是我的code - 更新:
导入了java.util.Random;
进口android.app.Activity;
进口android.content.Context;
进口android.os.Bundle;
进口android.telephony.SmsManager;
进口android.view.View;
进口android.view.inputmethod.InputMethodManager;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.Toast;
公共类MainActivity延伸活动{
的EditText PhNumber,信息,TxtCount;
按钮btnSendSMS;
/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
//创建文本框输入电话号码
PhNumber =(EditText上)findViewById(R.id.PhNumber);
//创建文本框输入信息
消息=(EditText上)findViewById(R.id.Message);
//创建文本框看到用户有多少次想要发送的消息
TxtCount =(EditText上)findViewById(R.id.TxtCount);
//创建按钮发送短信
btnSendSMS =(按钮)findViewById(R.id.btnSendSMS);
//创建侦听器按钮
btnSendSMS.setOnClickListener(新View.OnClickListener()
{
公共无效的onClick(视图v)
{
//变量计数。
诠释计数= 1;
//变量短信
弦乐味精= Message.getText()的toString()。
//创建的字母字符串数组
串[] MARRAY = {一个,B,C,D,E,F,G,H,I,J,K, 升,米,
的n,o的,P,Q,R,S,T,U型,V,W,R,×,Y ,z的};
//创建变量来保存随机数
最后随机R =新的随机();
//变量电话号码
。字符串NUM = PhNumber.getText()的toString();
//创建的电话号码阵列以获得输入的数字的数量。
的char [] nArray = num.toCharArray();
//变量的短信发送量。
。字符串MAX1 = TxtCount.getText()的toString();
//变量看按钮,隐藏键盘
InputMethodManager经理=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
//测试,看看数字的值
如果(num.equals()||(nArray.length小于10))
{
Toast.makeText(getApplicationContext(),输入10位数的电话号码!,Toast.LENGTH_SHORT).show();
返回;
}
//测试,以查看是否味精具有值
如果(msg.equals())
{
Toast.makeText(getApplicationContext()!输入信息,Toast.LENGTH_SHORT).show();
返回;
}
//测试以查看是否有一个的次数为文本
如果(max1.equals()||(的Integer.parseInt(TxtCount.getText()的toString())≤; = 0))
{
Toast.makeText(getApplicationContext(),!进入一个大于零的数更核弹,Toast.LENGTH_SHORT).show();
返回;
}
//如果所有的领域都有效的数据 - 发送短信,直到数= MAX
INT最大=的Integer.parseInt(TxtCount.getText()的toString());
而(计数< =最大值){
//创建变量来保存字母表中的随机字母
字符串rLetter = MARRAY [r.nextInt(25)];
字符串rLetter2 = MARRAY [r.nextInt(25)];
字符串rLetter3 = MARRAY [r.nextInt(25)];
字符串rLetter4 = MARRAY [r.nextInt(25)];
最后的随机I =新的随机();
sendSMS(NUM,(rLetter3 + i.nextInt(100)+ rLetter4 ++味精++ rLetter + i.nextInt(100)+ rLetter2));
算上++;
};
//隐藏键盘
mgr.hideSoftInputFromWindow(TxtCount.getWindowToken(),0);
mgr.hideSoftInputFromWindow(PhNumber.getWindowToken(),0);
mgr.hideSoftInputFromWindow(Message.getWindowToken(),0);
//设置的电话号码为
PhNumber.setText();
//设置消息
Message.setText();
//设置计数
TxtCount.setText();
//重新关注电话号码
PhNumber.requestFocus();
}
});
}
//发送短信到另一台设备
私人无效sendSMS(字符串phoneNumber的,字符串消息)
{
SmsManager的短信= SmsManager.getDefault();
sms.sendTextMessage(phoneNumber的,空,消息,NULL,NULL);
}
}
解决方案
您不能比较字符串== 试试这个
如果(TxtCount.getText()的toString()。等于())
{
Toast.makeText(getApplicationContext(),请输入的次数核弹,Toast.LENGTH_SHORT).show();
}
否则如果(num.queals())
{
Toast.makeText(getApplicationContext(),请输入电话号码核弹,Toast.LENGTH_SHORT).show();
}
否则如果(msg.equals())
{
Toast.makeText(getApplicationContext(),请输入信息,Toast.LENGTH_SHORT).show();
}
而(计数< =最大值)
{
sendSMS(+数字,+味精);
算上++;
};
像这样
否则,如果(num.equals())
{
Toast.makeText(getApplicationContext(),请输入电话号码核弹,Toast.LENGTH_SHORT).show();
返回;
}
Trying to send a text message more than 100 times, is there any way to override the SMSDispatcher text limitation?
Here's the error:
08-02 03:34:07.927: WARN/dalvikvm(1199): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): FATAL EXCEPTION: main
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): java.lang.NullPointerException
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at com.android.internal.telephony.SMSDispatcher.handleReachSentLimit(SMSDispatcher.java:809)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at com.android.internal.telephony.SMSDispatcher.handleMessage(SMSDispatcher.java:339)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at android.os.Handler.dispatchMessage(Handler.java:99)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at android.os.Looper.loop(Looper.java:123)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at java.lang.reflect.Method.invokeNative(Native Method)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at java.lang.reflect.Method.invoke(Method.java:521)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-02 03:34:07.927: ERROR/AndroidRuntime(1199): at dalvik.system.NativeStart.main(Native Method)
Here's my code -- updated:
import java.util.Random;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText PhNumber, Message, TxtCount;
Button btnSendSMS;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//create text box to enter phone number
PhNumber=(EditText) findViewById(R.id.PhNumber);
//create text box to enter message
Message=(EditText) findViewById(R.id.Message);
//create text box to see how many times the user wants to send message
TxtCount=(EditText) findViewById(R.id.TxtCount);
//create button to send text message
btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
//create listener for button
btnSendSMS.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
//variable for count.
int count = 1;
//variable for text message
String msg = Message.getText().toString();
//create string array of the alphabet
String[] mArray = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "r", "x", "y", "z"};
//create variable to hold random number
final Random r = new Random();
//variable for phone number
String num = PhNumber.getText().toString();
//create array of the phone number to get the number of numbers entered.
char[] nArray = num.toCharArray();
//variable for the amount of text messages to send.
String max1 = TxtCount.getText().toString();
//variable to watch button and hide keyboard
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//test to see if number has a value
if (num.equals("") || (nArray.length < 10))
{
Toast.makeText(getApplicationContext(), "Enter 10 digit phone number!", Toast.LENGTH_SHORT).show();
return;
}
//test to see if msg has a value
if (msg.equals(""))
{
Toast.makeText(getApplicationContext(), "Enter a message!", Toast.LENGTH_SHORT).show();
return;
}
//test to see if there's a number of times to text
if (max1.equals("") || (Integer.parseInt(TxtCount.getText().toString()) <= 0))
{
Toast.makeText(getApplicationContext(), "Enter a number more than zero to nuke!", Toast.LENGTH_SHORT).show();
return;
}
//if all fields have valid data -- send text message until count = max
int max = Integer.parseInt(TxtCount.getText().toString());
while (count <= max) {
//create variable to hold random letter of the alphabet
String rLetter = mArray[r.nextInt(25)];
String rLetter2 = mArray[r.nextInt(25)];
String rLetter3 = mArray[r.nextInt(25)];
String rLetter4 = mArray[r.nextInt(25)];
final Random i = new Random();
sendSMS(num, (rLetter3 + i.nextInt(100) + rLetter4 + " " + msg + " " + rLetter + i.nextInt(100) +rLetter2));
count++;
};
//hide the keyboard
mgr.hideSoftInputFromWindow(TxtCount.getWindowToken(), 0);
mgr.hideSoftInputFromWindow(PhNumber.getWindowToken(), 0);
mgr.hideSoftInputFromWindow(Message.getWindowToken(), 0);
//set phone number to ""
PhNumber.setText("");
//set message to ""
Message.setText("");
//set count to ""
TxtCount.setText("");
//refocus on phone number
PhNumber.requestFocus();
}
});
}
//sends a sms message to another device
private void sendSMS(String phoneNumber, String message)
{
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}
}
解决方案
You can't compare string with == try this
if (TxtCount.getText().toString().equals(""))
{
Toast.makeText(getApplicationContext(), "Please enter a number of times to nuke!", Toast.LENGTH_SHORT).show();
}
else if (num.queals(""))
{
Toast.makeText(getApplicationContext(), "Please enter a phone number to nuke!", Toast.LENGTH_SHORT).show();
}
else if (msg.equals(""))
{
Toast.makeText(getApplicationContext(), "Please enter a message!", Toast.LENGTH_SHORT).show();
}
while (count <= max)
{
sendSMS(""+num,""+ msg);
count++;
};
Like this
else if (num.equals(""))
{
Toast.makeText(getApplicationContext(), "Please enter a phone number to nuke!", Toast.LENGTH_SHORT).show();
return;
}
这篇关于Android应用程序强制关闭的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文