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

Приём СМС - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
vovken1997
 Аватар для vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
16.11.2014, 17:19     Приём СМС #1
Здравствуйте!
Уже не первый день пытаюсь прочитать своим приложением входящее сообщение, но безрезультатно. На гаджете вообще программа никак не реагирует, а эмулятор вылетает со словами "Unfortunately, sms has stopped"
Вроде бы всё делал по видео: http://youtu.be/op_7cUKceaA

Помогите пожалуйста разобраться в чём проблема)

Манифест:
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
35
36
37
38
39
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sms"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
     
   
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
         <receiver android:name="SMSMonitor">
            <intent-filter android:priority="100">
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
    </application>
 
</manifest>
MainActivity.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
public class MainActivity extends ActionBarActivity {
 
     Button btnSendSMS; 
     EditText txtPhoneNo; 
     EditText txtMessage; 
     TextView txt;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btnSendSMS = (Button) findViewById(R.id.button1); 
        txtPhoneNo = (EditText) findViewById(R.id.editText1); 
        txtMessage = (EditText) findViewById(R.id.editText2);
        txt = (TextView) findViewById(R.id.textView1);
         
         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) 
     { 
         String SENT = "SMS_SENT";
         String DELIVERED = "SMS_DELIVERED"; 
         PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); 
         PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); 
         
         SmsManager sms = SmsManager.getDefault(); 
         sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
         
         
    } 
 
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
SMSReciever.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
public class SMSReceiver extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        SmsMessage[] messages = null;
        String str = "";
        if(bundle != null)
        {
            Object[] pdus = (Object[]) bundle.get("pdus");
            messages = new SmsMessage[pdus.length];
            for(int i=0; i<messages.length; i++)
            {
                messages[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
                str += "Messafe from "+messages[i].getOriginatingAddress();
                str += " :";
                str += messages[i].getMessageBody();
                str += "\n";
            }
            Toast.makeText(null, str, Toast.LENGTH_LONG).show();
 
        }
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 17:19     Приём СМС
Посмотрите здесь:

Android Отправка смс
Отправка длинного СМС Android
Android СМС менеджер или блокиратор СМС по содержимому
Чтение смс Android
Реакция на смс Android
Android Как задать определённый номер на отправку смс и приём смс
Приходят смс с крякозябрами Android
Приём текста по Bluetooth. Ошибки в символах Android
Конвертирование email в смс Android
Android Обработка смс
Android Приём данных по Bluetooth
Android Приём сообщений от сервера в фоне

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GerNik
4 / 4 / 2
Регистрация: 03.02.2013
Сообщений: 31
16.11.2014, 18:01     Приём СМС #2
Посмотри тут, http://habrahabr.ru/post/149555/
там все понятно написано и есть ссылка на готовый проект
vovken1997
 Аватар для vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
16.11.2014, 21:00  [ТС]     Приём СМС #3
Не, нифига не работает.
Java
1
public void onReceive(Context context, Intent intent) {
Этот метод просто не вызывается((
Если у кого-нибуть есть нормальный исходник, киньте пожалуйста)
GerNik
4 / 4 / 2
Регистрация: 03.02.2013
Сообщений: 31
16.11.2014, 23:14     Приём СМС #4
а ты уверен, что onReceive не вызывается? Пропиши в нем логи и проверь, все должно работать. Твой toast не будет работать так как ты ему не передаешь контекст и вообще не надо тосты вызывать в BroadcastReceiver
vovken1997
 Аватар для vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
17.11.2014, 21:07  [ТС]     Приём СМС #5
GerNik, проверил через лог, там ничего. Написал первой командой в BroadcastReceiver и ничего( лог чистый...
Yandex
Объявления
17.11.2014, 21:07     Приём СМС
Ответ Создать тему
Опции темы

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