Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
#1

Добавление записи в Базу данных - Android

01.02.2015, 15:59. Просмотров 493. Ответов 14
Метки нет (Все метки)

Добрый вечер,
Есть работающее приложение для чтения и отправки сообщений. Необходимо записать входящие сообщения в бд.
Пытаюсь пытаюсь у меня не получается. Пожалуйста помогите разобраться с бд.
Заранее всех благодарю за ответы и помощь.
SMS.java
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package net.learn2develop.SMSMessaging;
 
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class SMS extends Activity {
    
    Button btnSendSMS;
    EditText txtPhoneNo;
    EditText txtMessage;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sms);
           
 
        btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
        txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
        txtMessage = (EditText) findViewById(R.id.txtMessage);
 
        btnSendSMS.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {                
                String phoneNo = txtPhoneNo.getText().toString();
                String message = txtMessage.getText().toString();                 
                if (phoneNo.length()>0 && message.length()>0)                
                    sendSMS(phoneNo, message);                
                else
                    Toast.makeText(getBaseContext(), 
                        "Please enter both phone number and message.", 
                        Toast.LENGTH_SHORT).show();
            }
        });        
 
    }
    private void sendSMS(String phoneNumber, String message)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, SMS.class), 0);                
        android.telephony.SmsManager sms = android.telephony.SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, pi, null);        
    } 
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.sm, menu);
        return true;
    }
 
}


SMSReceiver.java
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package net.learn2develop.SMSMessaging;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.widget.Toast;
 
public class SmsReceiver extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---получить входящее SMS сообщение---
        Bundle bundle = intent.getExtras();        
        android.telephony.SmsMessage[] msgs = null;
        String str = "";            
        if (bundle != null)
        {
            //---извлечь полученное SMS ---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new android.telephony.SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = android.telephony.SmsMessage.createFromPdu((byte[])pdus[i]);                
                str += "SMS from " + msgs[i].getOriginatingAddress();                     
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";        
            }
            //---Показать новое SMS сообщение---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        }                         
    }
 
 
}



activity_sms.xml
Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Enter the phone number of recipient"
        />     
    <EditText 
        android:id="@+id/txtPhoneNo"  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"        
        />
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"         
        android:text="Message"
        />     
    <EditText 
        android:id="@+id/txtMessage"  
        android:layout_width="fill_parent" 
        android:layout_height="150px"
        android:gravity="top"         
        />          
    <Button 
        android:id="@+id/btnSendSMS"  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:text="Send SMS"
        />    
</LinearLayout>
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 16:58     Добавление записи в Базу данных #2
Цитата Сообщение от Kazachek Посмотреть сообщение
Пытаюсь пытаюсь у меня не получается.
А что именно не получается? Ошибка какая-то или еще что-то?
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 17:14  [ТС]     Добавление записи в Базу данных #3
Цитата Сообщение от dubok79 Посмотреть сообщение
Ошибка какая-то или еще что-то?
Да, везде ошибки все красное. Читаю смотрю видеоуроки, там вообще как то все не так. Ща выложу код который на данный момент у меня и не работает

Добавлено через 13 минут
SMS.java
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package net.learn2develop.SMSMessaging;
 
import net.learn2develop.SMSMessaging.SMS.DBHelper;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class SMS extends Activity {
    final String LOG_TAG = "myLogs";
    DBHelper dbHelper;
    Button btnSendSMS;
    EditText txtPhoneNo;
    EditText txtMessage;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sms);
           
 
        btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
        txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
        txtMessage = (EditText) findViewById(R.id.txtMessage);
        // создаем объект для создания и управления версиями БД
        dbHelper = new DBHelper(this);
        btnSendSMS.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {                
                String phoneNo = txtPhoneNo.getText().toString();
                String message = txtMessage.getText().toString();                 
                if (phoneNo.length()>0 && message.length()>0)                
                    sendSMS(phoneNo, message);                
                else
                    Toast.makeText(getBaseContext(), 
                        "Please enter both phone number and message.", 
                        Toast.LENGTH_SHORT).show();
            }
        });        
 
    }
    
    
    private void sendSMS(String phoneNumber, String message)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, SMS.class), 0);                
        android.telephony.SmsManager sms = android.telephony.SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, pi, null);    
        ContentValues cv = new ContentValues();
        // подключаемся к БД
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        
        Log.d(LOG_TAG, "--- Insert in mytable: ---");
        // подготовим данные для вставки в виде пар: наименование столбца - значение
        
        cv.put("name", message);
        cv.put("email", message);
        // вставляем запись и получаем ее ID
        long rowID = db.insert("mytable", null, cv);
        Log.d(LOG_TAG, "row inserted, ID = " + rowID); 
        
        
        
    } 
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.sm, menu);
        return true;
    }
 
    
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
          // конструктор суперкласса
          super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
          Log.d(LOG_TAG, "--- onCreate database ---");
          // создаем таблицу с полями
          db.execSQL("create table mytable ("
              + "id integer primary key autoincrement," 
              + "name text,"
              + "email text" + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
      }
    
    
    
    
}



А вот тут у меня ошибки
SMS_Reciever.java
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package net.learn2develop.SMSMessaging;
 
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.util.Log;
import android.widget.Toast;
 
public class SmsReceiver extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---получить входящее SMS сообщение---
        Bundle bundle = intent.getExtras();        
        android.telephony.SmsMessage[] msgs = null;
        String str = "";            
        if (bundle != null)
        {
            //---извлечь полученное SMS ---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new android.telephony.SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = android.telephony.SmsMessage.createFromPdu((byte[])pdus[i]);                
                str += "SMS from " + msgs[i].getOriginatingAddress();                     
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";        
            }
            //---Показать новое SMS сообщение---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
            ContentValues cv = new ContentValues();
            // подключаемся к БД
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            
            Log.d(LOG_TAG, "--- Insert in mytable: ---");
            // подготовим данные для вставки в виде пар: наименование столбца - значение
            
            cv.put("name", message);
            cv.put("email", message);
            // вставляем запись и получаем ее ID
            long rowID = db.insert("mytable", null, cv);
            Log.d(LOG_TAG, "row inserted, ID = " + rowID); 
            
            
            
            
            
            
            
            
            
        }                         
    }
 
 
}
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 18:14     Добавление записи в Базу данных #4
Выкладывайте весь проект тогда что-ли. По обрывкам и не скажешь. На первый взгляд все правильно. Может какой ссылки нету.
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 18:21  [ТС]     Добавление записи в Базу данных #5
Цитата Сообщение от dubok79 Посмотреть сообщение
Выкладывайте весь проект тогда что-ли.
Извините за неудобства, просто у нас ip форума закрыт, и я захожу через прокси сервера а при загрузки вложений меня скидывает((( По этому так сделал. Ща зарегистрируюсь в каком нибудь файлообменнике и залью файл туда((

Добавлено через 21 секунду
Вы только не отключайтесь пожалуйста, единственная помощь

Добавлено через 1 минуту
ссылка для скачивания архива на местном файлообменнике
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 18:36     Добавление записи в Базу данных #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В файле SMS_Receiver.java
у вас нет константы LOG_TAG - объявите ее или удалите строчки с вызовом Log.d
у вас не объявлена переменная dbHelper. Объявите ее по примеру из SMS.java и лучше выделить это во внешний класс вместо использования каждый раз внутри.
Ну и у вас не объявлена и никак не задана переменная message. Объявите ее.
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 18:47  [ТС]     Добавление записи в Базу данных #7
Первый и последний пункт, смогу сделать, а вот с отдельным классом не смогу. можете помочь? Пожалуйста, очень прошу
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 18:58     Добавление записи в Базу данных #8
Ну тогда просто скопируйте из SMS в SMS_Receiver код с классом
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package net.learn2develop.SMSMessaging;
 
import net.learn2develop.SMSMessaging.SMS.DBHelper;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.util.Log;
import android.widget.Toast;
 
public class SmsReceiver extends BroadcastReceiver {
 
    
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---получить входящее SMS сообщение---
        Bundle bundle = intent.getExtras();        
        android.telephony.SmsMessage[] msgs = null;
        String str = "";            
        if (bundle != null)
        {
            //---извлечь полученное SMS ---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new android.telephony.SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = android.telephony.SmsMessage.createFromPdu((byte[])pdus[i]);                
                str += "SMS from " + msgs[i].getOriginatingAddress();                     
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";        
            }
            //---Показать новое SMS сообщение---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
            ContentValues cv = new ContentValues();
            // подключаемся к БД
            DBHelper dbHelper = new DBHelper(context);
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            
            Log.d("LOG", "--- Insert in mytable: ---");
            // подготовим данные для вставки в виде пар: наименование столбца - значение
            String message = "Сообщение";
            cv.put("name", message);
            cv.put("email", message);
            // вставляем запись и получаем ее ID
            long rowID = db.insert("mytable", null, cv);
            Log.d("LOG", "row inserted, ID = " + rowID); 
        }                         
    }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
          // конструктор суперкласса
          super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
          // создаем таблицу с полями
          db.execSQL("create table mytable ("
              + "id integer primary key autoincrement," 
              + "name text,"
              + "email text" + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
      }
}
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 19:02  [ТС]     Добавление записи в Базу данных #9
Цитата Сообщение от dubok79 Посмотреть сообщение
Ну тогда просто скопируйте из SMS в SMS_Receiver код с классом
Сделал, как проверить, что что то записалось или нет- Визуально без скрипта?

Добавлено через 13 секунд
Есть ли какой либо инструмент?
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 19:16     Добавление записи в Базу данных #10
ну если рут есть на смартфоне я использую root explorer он открывает файлы БД
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 19:20  [ТС]     Добавление записи в Базу данных #11
Есть ли какой либо инструмент?
Цитата Сообщение от dubok79 Посмотреть сообщение
ну если рут есть на смартфоне
К сожалению нету рута.
а можно создать отдельный класс и все вывести на нем?
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 19:21     Добавление записи в Базу данных #12
Kazachek, ну как бы все можно. Посмотрите логи, если ошибок нет, то логи покажут что записалось в БД
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 19:23  [ТС]     Добавление записи в Базу данных #13
Можете с этим помочь?

Добавлено через 1 минуту
Цитата Сообщение от dubok79 Посмотреть сообщение
Посмотрите логи, если ошибок нет, то логи покажут что записалось в БД
В логах есть, без ошибок, но теперь нужно создать еще одно активити чтоб на нем все данные вывелись. Таким образом я научусь читать данные.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
01.02.2015, 19:30     Добавление записи в Базу данных #14
Логи посмотреть? У меня нет студии. но наверное и там есть Log Kat, в нем и посмотрите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2015, 19:49     Добавление записи в Базу данных
Еще ссылки по теме:

Добавление таблиц в базу данных Android
Android Загрузить собственную базу данных
Android Собрать проект использующий базу данных в apk
Android Обновить список БД после добавление новой записи?
Создать базу данных по нажатию кнопки Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kazachek
15 / 15 / 2
Регистрация: 03.11.2013
Сообщений: 337
01.02.2015, 19:49  [ТС]     Добавление записи в Базу данных #15
Теперь постараюсь создать рассылку смс из номеров находящихся в базе. Жаль что у Вас нет Eclips-а могли бы помочь. Или все таки можете?
Yandex
Объявления
01.02.2015, 19:49     Добавление записи в Базу данных
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru