0
先生,我有更新我的數據庫的問題。我做了包含此數據的列表視圖更新android中的sqlite
name
phone number
status
我想,如果他在它發送的郵件帶有關鍵字「可用」更新的個人狀態和將更新我的列表視圖這樣
name
phone number
available
所以我決定讓電話號碼作爲觸發器。如果發送消息的人的電話號碼在我的列表視圖中,它將更新數據庫。但這裏是我的問題,如果我在我的列表視圖以這種格式保存的電話號碼
09211234567
發送者將返回自己的手機號碼作爲
+639211234567
,所以我工作圍繞這通過獲取子和將電話號碼剪切爲「9211234567」,然後加0將其轉換爲「09211234567」。
但是,數據庫狀態仍然不會更新。但是當我使用相同的技術從模擬器發送短信到模擬器時,它工作得很好。
我救仿真器的數量在我的ListView作爲
5556
但模擬器返回
15555215556
,所以我剛纔得到的子獲得5556
請幫助我。這裏是我的代碼:
public static String sender;
public GroupDb info;
public String aStatus = "available";
public String nStatus = "not available";
public String addNum = "0";
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
info = new GroupDb(context);
Bundle bundle = intent.getExtras();
Object[] pdusObj = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdusObj.length];
for (int i = 0; i<pdusObj.length; i++)
{
messages[i] = SmsMessage.createFromPdu ((byte[])
pdusObj[i]);
sender = messages[i].getOriginatingAddress();
}
for (SmsMessage msg : messages) {
if (msg.getMessageBody().contains("available")) {
info.open();
String remFirstChar = sender.substring(3);
addNum += remFirstChar;
Toast.makeText(context.getApplicationContext(), "received sms from: " +addNum,
Toast.LENGTH_LONG).show();
//if starts with +639
if(sender.length() == 13)
{
info.updateStatus(addNum, aStatus);
Toast.makeText(context.getApplicationContext(), "addNum: " +addNum,
Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(context.getApplicationContext(), "sender: " +sender,
Toast.LENGTH_LONG).show();
info.updateStatus(remFirstChar, aStatus);
}
info.close();
}//end if - available
這是我如何更新我的狀態
//update status
public void updateStatus(String mNumber, String mStatus) throws SQLException
{
// TODO Auto-generated method stub
ContentValues cvUpdate = new ContentValues();
cvUpdate.put(KEY_STATUS, mStatus);
ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_NUMBER + "=" + mNumber, null);
}
更新: 我甚至試圖進入列表視圖中的「+63」的格式,但儘管如此,我將不會更新。刪除和編輯等所有功能也不起作用並顯示強制關閉。
原來是這樣!謝謝。起初,我試圖刪除電話號碼中第一個字符爲0或者+63的字符,然後將其保存到數據庫中,然後將其顯示在我的列表視圖中,其中0。它也有效。 –