1
我已經構建了一個appWidget,它在更新短信時會更新它的未讀短信計數,因爲我註冊了一個contentObserver來監控傳入短信。android AppWidget:SMS查詢適用於模擬器,但不適用於真實設備
mySMSObserver類調用下面的方法獲取特定聯繫人的未讀郵件數,其編號爲。
到目前爲止,問題是下面的查詢在模擬器上工作正常,但是當我嘗試在我的Android設備上時,它總是返回0未讀消息(如Toast所示)。
私人靜態字符串updateUnreadSMS(字符串的ContactID,上下文的背景下){
ContentResolver cr=context.getContentResolver();
//final Uri SMS_INBOX=(Uri.parse("content://mms-sms/conversations"));
//final Uri SMS_INBOX=(Uri.parse("content://mms/inbox"));
final Uri SMS_INBOX=Uri.parse("content://sms/inbox");
Cursor c = cr.query(SMS_INBOX, null, "read = 0 AND person=?", new String[]{contactID}, null);
// get number of unread sms messages
int unreadMessagesCount = c.getCount();
Log.d("DEBUG", "UnreadSMS: "+unreadMessagesCount);
Toast.makeText(context, "updateUnreadSMS "+unreadMessagesCount, Toast.LENGTH_LONG).show();
c.deactivate();
return String.valueOf(unreadMessagesCount);
}
有不同查詢的需要爲不同的設備?
如何爲「content:// mms/inbox」?編寫相同的查詢,因爲「person =?」是該查詢的非法字段。
會很高興您的幫助和建議解決這個問題的:)
感謝您的評論,我只是需要一些更多的說明請: *我如何檢查我的android設備位置和數據庫結構是否一樣?特別是,我如何檢查我的android設備位置和數據庫結構? *我如何間接訪問我的數據庫?特別是對於SMS數據庫 感謝先進! – GalDude33
據我所知(糾正我,如果我錯了),你不能檢查存儲的位置。你需要知道哪個版本的Android存儲數據在哪裏。所以最好的方法是通過Android類來訪問數據。這裏是最大的問題。有些存儲可以通過這種方式訪問,有些則不行。這是Android OS不能提供所有必需的訪問權限的一大缺點。我對SMS存儲不熟悉,所以你需要在操作系統內部進行一次跳躍以找出在哪裏和什麼。 – Drejc
如果你看看這個問題的評論,你會得到的感覺:http://stackoverflow.com/questions/4809874/how-to-access-the-sms-storage-on-android – Drejc