2010-06-15 61 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美分