没有SMS内容提供商的任何Android手机?

时间:2011-06-13 02:52:52

标签: android sms android-contentprovider

我正在编写一个应用程序,需要读取用户的文本消息以进行基本操作。 Google表示,短信内容提供商不受支持,可能不会出现在某些手机中,也可能无法在未来的Android版本中使用。我想知道是否有人知道没有SMS内容提供商的任何特定手机?我知道这个问题已被提出 -

Is there any phone that doesn't have sms inbox content provider?但没有人提供答案。 或者,如果有人可以建议使用标准API读取传入和传出消息的方法,那就更好了。

2 个答案:

答案 0 :(得分:3)

我没有找到没有短信内容提供商的手机(至少来自Google搜索)。我不认为制造商会冒险破坏与众多SMS应用程序的兼容性(所有这些都使用这个私有API)。 此外,此时似乎没有标准方法来访问传入和传出消息。

更新:这已经成为4.4 - https://developer.android.com/reference/android/provider/Telephony.html

的公共API

答案 1 :(得分:2)

Uri mSmsinboxQueryUri = Uri.parse("content://sms");
Cursor cursor1 = getContentResolver().query(
        mSmsinboxQueryUri,
        new String[] { "_id", "thread_id", "address", "person", "date",
                "body", "type" }, null, null, null);
startManagingCursor(cursor1);
String[] columns = new String[] { "address", "person", "date", "body",
        "type" };
if (cursor1.getCount() > 0) {
    String count = Integer.toString(cursor1.getCount());
    Log.e("Count",count);
    while (cursor1.moveToNext()) {
        out.write("<message>");
        String address = cursor1.getString(cursor1
                .getColumnIndex(columns[0]));
        String name = cursor1.getString(cursor1
                .getColumnIndex(columns[1]));
        String date = cursor1.getString(cursor1
                .getColumnIndex(columns[2]));
        String msg = cursor1.getString(cursor1
                .getColumnIndex(columns[3]));
        String type = cursor1.getString(cursor1
                .getColumnIndex(columns[4]));
}
}

Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
Uri mSmsinboxQueryUri = Uri.parse("content://sms/sent");

使用此功能,您可以阅读收件箱以及已发送的项目。

清单文件中的用户权限是

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