Вам необходимо установить определенные разрешения (см. Ссылку ниже), но здесь приведен пример кода, который используется Cursor
для получения первого SMS-сообщения.
Uri uri = Uri.parse("content://sms/inbox");
// returns all the results from the given Context
Cursor c = context.getContentResolver().query(uri, null, null ,null,null);
String body = null;
String number = null;
if(c.moveToFirst()) { // move cursor to first row
// retrieves the body and number of the SMS
body = c.getString(c.getColumnIndexOrThrow("body")).toString();
number = c.getString(c.getColumnIndexOrThrow("address")).toString();
}
// when your done, close the cursor.
c.close();
Я бы порекомендовал просмотреть FrontPage / Tutorials / SMS Messaging - Mobdev Wiki , он дает хорошее введение в работу с обработкой SMS на Android.
EDIT:
Эти методы не были видны вашему приложению, поскольку оно не распространялось на суперкласс Activity
. По умолчанию, когда вы разрабатываете приложение , оно наследует методы от этого отношения. Но вы сами не создаете приложение, вы разрабатываете виджет.
К счастью, в методе onUpdate
они передают текущий Context
, который является суперклассом для Activity
, поэтому мы можем использовать переменную context
для вызова getContentResolver
(, см. Выше в код )
Я также удалил из кода метод startManagingCursor
, его необязательно иметь, он позволяет Activity обрабатывать жизненный цикл данного Cursor
на основе жизненный цикл деятельности.
Дайте мне знать, если есть проблемы.
РЕДАКТИРОВАТЬ 2:
Внутри вашего AndroidManifest.xml
файла вам нужно установить правильные разрешения, чтобы избежать каких-либо исключений, добавьте эту строку.
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>