Любой телефон Android без поставщика SMS-контента? - PullRequest
3 голосов
/ 13 июня 2011

Я пишу приложение, которое должно читать текстовые сообщения пользователя для его основной операции. По словам Google, поставщик SMS-контента не поддерживается и может отсутствовать в некоторых телефонах или может не работать в будущих версиях Android. Я хотел бы знать, если кто-нибудь знает какие-либо конкретные телефоны без поставщика контента SMS? Я знаю, что вопрос уже задавался -

Есть ли телефон, у которого нет поставщика содержимого входящих сообщений sms? , но никто не дал ответа. Кроме того, если бы кто-то мог предложить способ чтения входящих и исходящих сообщений с использованием стандартного API, это было бы еще лучше.

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Мне не удалось найти телефон без поставщика содержимого SMS (по крайней мере, из поисков Google). Я не думаю, что производители пойдут на риск нарушения совместимости с многочисленными SMS-приложениями (которые все используют этот частный API). Кроме того, на данный момент не существует стандартного способа доступа как к входящим, так и к исходящим сообщениям.

Обновление: это стало общедоступным API с 4.4 - https://developer.android.com/reference/android/provider/Telephony.html

2 голосов
/ 13 июня 2011
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" />
...