2013-04-20 37 views
0

我正在開發一個自動回覆android應用程序,它將發送消息到來電號碼,如果它匹配所選的號碼,即保存在數據庫中。它運行成功,但它發送消息兩次,它發送三個消息到該來電號碼。SmsManager發送消息不止一個

我使用下面的代碼:

void processCall(String inNumber, String msg) { 

    try { 

     String sent = "android.telephony.SmsManager.STATUS_ON_ICC_SENT"; 
     PendingIntent pisent = PendingIntent.getBroadcast(getBaseContext(),0, new Intent(sent), 0); 
     PendingIntent pidel = PendingIntent.getBroadcast(getBaseContext(),0, new Intent("Dilivered"), 0); 
     SmsManager man = SmsManager.getDefault(); 

     //ArrayList<String> smstext = man.divideMessage(msg); 
     man.sendTextMessage(inNumber, null, msg, pisent, null); 
     //man.sendMultipartTextMessage(inNumber, null, smstext, null, null); 
     Toast.makeText(getBaseContext()," msg send successfully to " + inNumber, Toast.LENGTH_SHORT).show(); 
     ContentValues sentSms = new ContentValues(); 
     sentSms.put(TELEPHON_NUMBER_FIELD_NAME, inNumber); 
     sentSms.put(MESSAGE_BODY_FIELD_NAME, msg); 
     ContentResolver contentResolver = getContentResolver(); 
     contentResolver.insert(SENT_MSGS_CONTET_PROVIDER, sentSms); 
     return; 
    } 
    catch (Exception e) { 

     Toast.makeText(getApplicationContext(), "SMS faild, please try again later!", Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } 

在哪裏我做錯了什麼?任何幫助是極大的讚賞。

+0

問題是在解僱這一個的方法...你可以添加代碼? – madlymad 2013-04-20 09:19:36

+0

String originalNumber = incomingNumber.substring(incomingNumber.length() - 5,incomingNumber.length()); – user8938 2013-04-20 09:23:09

+0

如果(originalNumber.equalsIgnoreCase(savenumstr.substring(savenumstr.length() - 5,savenumstr.length()))){ \t \t \t \t \t \t \t \t //如果(incomingNumber.equalsIgnoreCase(savenumstr)){ \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t嘗試{ \t \t \t \t \t \t \t \t \t TelephonyManager經理=(TelephonyManager)MyPhoneStateListener.this.getSystemService(Context.TELEPHONY_SERVICE); \t \t \t \t \t \t \t \t \t類C1 =的Class.forName(manager.getClass()的getName()); 方法m = c1.getDeclaredMethod(「getITelephony」); m.setAccessible(true); \t \t \t \t \t \t \t \t \t ITelephony電話=(ITelephony)m.invoke(經理); telephony.endCall(); processCall(incomingNumber,message); } – user8938 2013-04-20 09:25:39

回答

0

嘗試在日誌消息之間插入,看看這個函數執行多少次。此外,如果這是一個服務正在運行,看看你是否多次發射該服務

+0

我把它顯示一次的日誌消息 – user8938 2013-04-20 09:19:41