1
我做的應用程序,是當收到收到消息字符串特定消息和消息字符串傳遞到上傳信息的方法,並從指定網址獲取數據並回信相同的號碼,但這個應用程序一段時間崩潰,並顯示強制關閉和短信一次又一次地回覆我應該怎麼做,這使得我的應用程序不會一次又一次回覆短信,而不會崩潰。如何防止應用程序崩潰,而不是一次又一次的回覆消息?
Incomingsms.java
public class IncomingSms extends BroadcastReceiver {
String senderNum;
String message;
String url;
String casetype;
String no;
String caseyear;
String result;
public void onReceive(Context context, Intent intent) {
Bundle myBundle = intent.getExtras();
SmsMessage [] messages = null;
String strMessage = "";
String msgFrom = "";
String msgText = "";
if (myBundle != null)
{
Object [] pdus = (Object[]) myBundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
strMessage += "SMS From: " + messages[i].getOriginatingAddress();
msgFrom += messages[i].getOriginatingAddress();
strMessage += " : ";
strMessage += messages[i].getMessageBody();
msgText += messages[i].getMessageBody();
strMessage += "\n";
}
Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show();
try {
String regex = "[\\s;.,:'!?()-]";
String text =msgText ;
String[] sms = text.split(regex);
for(int i = 0; i < sms.length; i++)
{
casetype = sms[0];
no = sms[1];
caseyear = sms[2];
}
}
catch (Exception e)
{
System.out.println(e);
Toast.makeText(context, "wrong msg" , Toast.LENGTH_SHORT).show();
}
url = "http://www.allahabadhighcourt.in/casestatus/caseDetailA.jsp?type=" +
casetype + "&num=" + no + "&year=" + caseyear;
try
{
result = uploadMessage(context,url);
}
catch (Exception e)
{
e.printStackTrace();
}
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(msgFrom, null, result, null, null);
}
}
public String uploadMessage(Context context, String url)
{
//System.out.println(url);
try{
Document doc = Jsoup.connect(url).timeout(20*1000).get();
if (!doc.hasText()){
System.out.println("doc empty");
}
Element pending = doc.select("table td:eq(0)").first();
Element nextDate = doc.select("table td:eq(0)").get(10);
//Element date1 = doc.select("table td:eq(0)").get(11);
Element date = doc.select("table td:eq(1)").last();
String data = pending.text()+"\n" + nextDate.text()+"\n"+ date.text();
return data ;
}catch(Exception ex){
System.out.println("" + ex.getMessage());
return "Nodata" ;
}
}
}
BroadcastNewSms.java
public class BroadcastNewSms extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.androidexample_broadcast_newsms);
}
}
Android清單
<uses-permission android:name="android.permission.RECEIVE_SMS" >
</uses-permission><uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" >
</uses-permission><uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission><receiver android:name="com.androidexample.broadcastreceiver.IncomingSms" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
請先生詳細講解 – akki