Использование Android Search Interface для поиска сохраненных SMS-сообщений

В качестве проекта колледжа мне нужно создать приложение для Android для поиска SMS-сообщений, хранящихся на устройстве. для например. если ввести «привет», то все сообщения, содержащие слово «привет», отображаются на экране. Я знаю, что это напрямую возможно в новых версиях Android, но сейчас я не могу изменить тему, и мне придется создать такое приложение и завершить его в первую неделю января 2012 года!

Я искал в Google и нашел 2 способа: -

  1. Используя руководство Mobdev Wiki и выполняя поиск сообщений, что является сложным и Я еще не использовал базы данных для программирования, поэтому для меня это довольно ново.

  2. Использование интерфейса поиска Android для непосредственного использования пользовательского интерфейса поиска Android и создания все проще и проще для меня.

Мне нужны предложения о том, какой метод подходит и какие другие варианты доступны. И как можно связать базу данных SMS с интерфейсом поиска Android и правильно отображать сообщения на экране. С нетерпением жду ваших предложений и ответов, если у вас нет времени, пожалуйста, хотя бы дайте ссылки на полезные ресурсы, связанные с вышеуказанной проблемой!


person Paawan    schedule 03.01.2012    source источник
comment
сначала вы должны понять платформу Android и поставщиков контента ... 1-я неделя января 2012 года ... хммм, так что вы делали последние 6 месяцев? удачи в любом случае   -  person Selvin    schedule 03.01.2012
comment
@selvin Я начал в августе 2011 года и прочитал первые несколько сотен страниц Руководства занятого кодера по разработке Android и имеют представление о платформе и узнали об использовании XML и Java для Android и теперь даже могут сделать небольшое приложение самостоятельно, затем я перешел к их 2-й книге, Учебникам по программированию для Android, и сделал много глав из нее, но, к сожалению, ни одной из книг есть какие-либо главы, связанные с моей проблемой с сохраненными SMS-сообщениями, поэтому нужна помощь по этой конкретной проблеме... :-)   -  person Paawan    schedule 03.01.2012
comment
все, что вам нужно сделать, это спросить sms ContentProvider об этих сообщениях ... этот специальный контент-провайдер просто абстрактен для поддержки базы данных SQLite с помощью sms ... context.getContentResolver().query(smsUriInboxOrOutboxOrWhatever, new String[] {columns, to, show}, SearchColumn + ' LIKE ?', new String[] {searchText}, null) ... он вернет Cursor ... теперь вы должны показать все данные из этого Курсор...   -  person Selvin    schedule 03.01.2012
comment
@Selvin Я еще раз прочитаю главы о ContentProvider и Cursors и, надеюсь, скоро смогу хорошо понять приведенный выше код! Большое спасибо!!   -  person Paawan    schedule 03.01.2012
comment
в любом случае у меня не было времени читать все это, но... mobdev. olin.edu/mobdevwiki/FrontPage/Tutorials/ вот именно то, что я написал ... но этот код возвращает все смс, и вам нужно искать .... поэтому selection и selectionArgs не должны быть нулевыми .. интерфейс поиска Android... ну... это слишком сложно для тебя... потому что тебе нужно создать свой собственный ContentProvider...   -  person Selvin    schedule 03.01.2012
comment
Я думаю об использовании второго метода, который я написал в своем исходном посте, а также в заголовке этого вопроса. Если я смогу сделать это приложение с помощью интерфейса поиска Android, тогда его будет намного проще реализовать и использовать. для меня на этом уровне, какие-либо предложения, пожалуйста??? Пожалуйста, дайте какие-либо предложения по поиску сообщений с помощью интерфейса поиска Android   -  person Paawan    schedule 03.01.2012
comment
@Selvin, извините, я только что прочитал вторую часть вашего комментария, будет несложно использовать интерфейс поиска Android, если я получу чужой ContentProvider или если sm1 сможет вставить сюда свой код, если он не слишком большой.   -  person Paawan    schedule 03.01.2012


Ответы (1)


Используйте поле редактирования и кнопку поиска в качестве графического интерфейса. А основной код для поиска того или иного слова в Inbox такой::

static Uri uri ;
Cursor c;
uri = Uri.parse("content://sms/inbox");
c = getContentResolver().query(uri, null, null ,null, "date DESC");
startManagingCursor(c);

String[] body = new String[c.getCount()];

if(c.moveToFirst()){
for(int i=0;i<c.getCount();i++){
    body[i]= c.getString(c.getColumnIndexOrThrow("body")); //.toString()

    item = check(body[i]);

    c.moveToNext();
}
}
c.close();

Пока функция проверки::

public ArrayList<String> check(String str)
{

    boolean fullContainsSub = str.toUpperCase().indexOf(content.toUpperCase()) != -1;

    if(fullContainsSub)
    {
     itemList.add(str);
    }
    return itemList;
}

Надеюсь, это поможет другим!!!

person Name is Nilay    schedule 29.09.2012