Доступ к папке входящих сообщений без Content UrI (content //: sms) - PullRequest
4 голосов
/ 15 июня 2010

Я хочу получить доступ к сообщениям, хранящимся в папке "Входящие", через мой Android проект. Я попробовал метод формирования URI для смс (содержание: // смс / Входящие), а затем запросить его для различных параметров.

Но я не могу найти документацию для чтения смс в папке "Входящие" Стандартные документы для разработчиков Android. На разных сайтах упоминалось, что этот контент был удалено из стандартного sdk. Приложение может не поддерживать выше версия андроида.

Итак, как мне создать приложение для чтения смс из входящих сообщений? надежный в будущем версии Android.

Пожалуйста, помогите !!

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

в моем случае это работает хорошо (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 голос
/ 16 июня 2010

Существует стандартное использование SmsMessage для отправки сообщений. http://developer.android.com/reference/android/telephony/SmsManager.html

Однако я думаю, что решение Content Provider более стабильно, чем Concrete Class, потому что Content Provider - это абстрактный уровень для доступа к данным в кросс-прикладном случае. В долгосрочной перспективе все можно изменить. Чтобы справиться с этим, разработчики выиграют от принятия шаблона проектирования, класса-оболочки для управления поставщиком контента (фасад) или использования шаблона объекта доступа к данным и т. Д.

В файле конфигурации Android мы можем ограничить уровень SDK, чтобы предотвратить потерю чего-либо:

<uses-sdk 
    android:minSdkVersion="5" 
    android:maxSdkVersion="8"
    android:targetSdkVersion="7" />

Я новичок в разработке для Android, даже если я прочитал много документов или книг, я знаю, что в исходном коде много черной магии. Изменение слишком быстрое, чтобы написать полный документ (поддерживать его в актуальном состоянии невозможно), поэтому не беспокойтесь об изменении AUTHORITY или Class.

мои 2 цента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...