我想通过我的android访问存储在收件箱中的邮件 项目。我尝试过为sms形成URI的方法(内容:// sms / 收件箱),然后查询各种参数。
但我找不到任何有关阅读收件箱短信的文档 标准Android Developr文档。 在各种网站上都提到过这个内容 从标准sdk中删除。该应用程序可能不支持更高 android版本。
那么,如何创建一个应用程序来从收件箱中读取短信 可靠的Android版本。
请帮助!!
答案 0 :(得分: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>
答案 1 :(得分:1)
用于发送消息的标准SmsMessage用途。 http://developer.android.com/reference/android/telephony/SmsManager.html
但是,我认为Content Provider解决方案比Concrete Class更稳定,因为Content Provider是跨应用程序案例中访问数据的抽象层。从长远来看,一切都可以改变。要面对它,开发人员将受益于采用设计模式,操纵内容提供程序(Facade)的包装类,或使用数据访问对象模式等。
在android配置文件中,我们可以限制sdk级别以防止丢失内容:
<uses-sdk
android:minSdkVersion="5"
android:maxSdkVersion="8"
android:targetSdkVersion="7" />
我是Android开发的新手,即使我读过很多文档或书籍,我知道源代码中有很多黑魔法。更改速度太快,无法编写完整的文档(无法保持最新状态),因此请不要担心AUTHORITY或Class已更改。
我的2美分