Nano Hash - криптовалюты, майнинг, программирование

Запрос SMS-сообщений возвращает нулевой курсор

Нам нужно читать как входящие, так и исходящие текстовые сообщения с телефона. Я много гуглил и нашел ряд источников, таких как:

Обнаружение входящих и исходящих SMS Как использовать SMS-провайдера? Где находятся документы? Android читает SMS-сообщения

назвать несколько.

По результатам своего исследования я написал следующий код:

    Uri allMessages = Uri.parse("content://sms/inbox");
    Cursor cursor = airApp.getContentResolver().query(allMessages, null, null, null, null);

    if(cursor.moveToFirst()){
        do {
            for (int i = 0; i < cursor.getColumnCount(); i++) {
                log.debug(cursor.getColumnName(i) + "=" + cursor.getString(i) + "");
            }
            log.debug("One row finished **************************************************");
        } while (cursor.moveToNext());
    }

Проблема в том, что курсор всегда равен нулю. Я проверил разрешения, и они:

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

Есть идеи, почему я получаю нулевой курсор?

25.02.2015

  • Я думаю, проблема в вашем Uri, вам нужно добавить Uri.parse (content: // sms / inbox) вместо Uri.parse (content: // sms /), чтобы читать входящие сообщения, я имею в виду, что вы не указали категорию ( входящие / исходящие / отправленные) для чтения. 25.02.2015

Ответы:


1

Так я собираю сообщения пользователей

Context mContext = c;

// The category can be only "inbox" or "sent" or"outbox"
String category = "inbox";

        Cursor c = tempContext.getContentResolver().query(Uri.parse("content://sms/" + category), null, null, null, null);

        // Message Storages
        StringBuffer messages = new StringBuffer("");


        if (c.moveToFirst()) {

            for (int i = 0; i < c.getCount(); i++) {
                messages.append("################\nFrom:"
                        + c.getString(c.getColumnIndex("address"))
                        + "\nMessage:    "
                        + c.getString(c.getColumnIndex("body"))
                        + "\n#################\n\n");
                c.moveToNext();
            }

          Log.d("X","INBOX:"+messages);

        }

После работы с этим фрагментом StringBuffer под названием «messages» будет содержать все сообщения из почтового ящика.

ПРИМЕЧАНИЕ. Категория может быть только "входящие", "отправленные" или "исходящие" ПРИМЕЧАНИЕ: вам нужно только добавить
в манифест

25.02.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..