2010-06-15 32 views
4

我想通過我的android 項目訪問存儲在收件箱中的郵件。我已經嘗試過爲短信形成URI的方法(content:// sms/ 收件箱),然後查詢各種參數。訪問沒有內容的郵件收件箱UrI(content //:sms)

但是我找不到任何文檔閱讀 標準Android開發者文檔中的收件箱短信。 有人在各種網站上提到,這個內容已經從標準sdk中刪除了 。該應用程序可能不支持較高的 版本的android。

那麼,我該如何創建一個apllication來讀取收件箱中的短信,即 可靠的android版本。

請幫忙!!

+2

好文章在這裏:http://mobdev.olin.edu/mobdevwiki/FrontPage/Tutorials/SMS%20Messaging – 2011-10-02 18:34:31

回答

4

它運作良好,在我的里程碑(SDK更新2.1)

public List<String> getSms() { 
     Uri mSmsQueryUri = Uri.parse("content://sms/inbox"); 
     List<String> messages = new ArrayList<String>(); 
     Cursor cursor = null; 
     try { 
      cursor = mContentResolver.query(mSmsQueryUri, null, null, null, null); 
      if (cursor == null) { 
       Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri); 
       return messages; 
      } 

      for (boolean hasData = cursor.moveToFirst(); hasData; hasData = cursor.moveToNext()) { 
       final String body = cursor.getString(cursor.getColumnIndexOrThrow("body")); 
       messages.add(body); 
      } 
     } catch (Exception e) { 
      Log.e(TAG, e.getMessage()); 
     } finally { 
      cursor.close(); 
     } 
     return messages; 
    } 

請確保您有讀短信權限:

<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 
+0

嗨, 感謝您的答覆。雖然這種訪問收件箱的方式有效,但它已從標準sdk中移除(正如在包括android開發人員在內的各種網站帖子中提到的那樣)。在android開發人員文檔中沒有關於內容提供者內容的文檔:// sms。此方法可能不適用於Android的下一個高分辨率版本。這就是爲什麼我正在尋找任何可靠的方式來訪問收件箱(而不是郵件主題中提到的內容URI)。 請讓我知道,如果任何人知道這樣做的其他方式。 謝謝 – 2010-06-15 17:51:51

+0

您是否獲得了訪問收件箱的解決方案? – 2010-10-03 15:44:25

+0

@ qrtt1:是的。這對我很有用。非常感謝。順便說一下,有什麼方法來獲得像這樣安裝的應用程序? – Praveenkumar 2011-10-14 04:21:05

1

有一個標準SmsMessage用途發送消息。 http://developer.android.com/reference/android/telephony/SmsManager.html

但是,我認爲Content Provider解決方案比具體類更穩定,因爲Content Provider是在跨應用程序的情況下訪問數據的抽象層。在長期看來,一切都可能改變。要面對它,開發人員將受益於採用設計模式,包裝類來操縱內容提供者(Facade)或使用數據訪問對象模式等。

在android配置文件中,我們可以限制sdk級別以阻止失去的東西:

<uses-sdk 
    android:minSdkVersion="5" 
    android:maxSdkVersion="8" 
    android:targetSdkVersion="7" /> 

我在Android開發新手,就算我看了很多文件或書籍,我知道有在源代碼中有很多的黑魔法。更改速度太快,無法寫出完整的文檔(保持最新狀態不可能),所以不要擔心AUTHORITY或Class發生了變化。

我的2美分