Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2018, 15:50   #1
илья123456
Пользователь
 
Регистрация: 14.05.2014
Сообщений: 29
По умолчанию Прием смс

Всем привет подскажите с кодом я понять его не могу осталось только прием смс сделать и обработать массивом типо если пришла команда 1 то ей присваивается выражение типо "Включение прибора", а если 0, то "Выключение прибора" и т.д до 9 например
Но пытался в него другой код вставить еще чтобы перемешать потому что мне нужно с одного конкретного номера чтобы показывал смс, другие мне безразличны. Может кто то делал подобное уже. вот такой код нашел.
Код:
package com.prm.priem;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

import android.widget.Toast;

public class SMSMonitor extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent)
    {
//---получить входящее SMS сообщение---

        Bundle bundle= intent.getExtras();
        SmsMessage[] msgs=null;
        String str="";
        if(bundle!=null)
        {
//---извлечь полученное SMS ---
            Object[] pdus=(Object[]) bundle.get("pdus");
            msgs=new SmsMessage[pdus.length];
            for(int i=0; i<msgs.length; i++){
                msgs[i]= SmsMessage.createFromPdu((byte[])pdus[i]);
                str+="SMS получено "+ msgs[i].getOriginatingAddress();
                str+=" :";
                str+= msgs[i].getMessageBody().toString();
               
            }
//---Показать новое SMS сообщение---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        }
    }

}
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 02.11.2018 в 13:36.
илья123456 вне форума Ответить с цитированием
Старый 02.11.2018, 13:20   #2
илья123456
Пользователь
 
Регистрация: 14.05.2014
Сообщений: 29
По умолчанию Тема закрыта

Тема закрыта. Сделал сам. если будет нужен код скажете
илья123456 вне форума Ответить с цитированием
Старый 02.11.2018, 13:34   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А не проще выложить код вместо личной отправки каждому спросившему?)

И вы не можете закрыть тему, не врите
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.11.2018, 12:41   #4
илья123456
Пользователь
 
Регистрация: 14.05.2014
Сообщений: 29
По умолчанию как то так) код работает только на прием

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А не проще выложить код вместо личной отправки каждому спросившему?)

И вы не можете закрыть тему, не врите

Код:
package com.prm.priem;

import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
//import android.os.IBinder;
import android.telephony.SmsMessage;

//import android.widget.TextView;
import android.widget.Toast;

public class SMSMonitor extends BroadcastReceiver {
    public static final String SMS_EXTRA_NAME = "pdus";// ключ


    public static final String ADDRESS = "address"; //пользователь

    public static final String BODY = "body";//текст сообщения

    private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
    public void onReceive( Context context, Intent intent ) //cmc
    {

        // Получите SMS-карту от намерения
       Bundle extras = intent.getExtras();
        StringBuilder messages = new StringBuilder();

        if ( extras != null && intent.getAction() != null && ACTION.compareToIgnoreCase(intent.getAction()) == 0) {
            // Получить полученный массив SMS
            Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);
            for (int i = 0; i < smsExtra.length; i++) {
                Object aSmsExtra = smsExtra[i];
                SmsMessage sms = SmsMessage.createFromPdu((byte[]) aSmsExtra);


                    String body = sms.getMessageBody().toString();
                    String address = sms.getOriginatingAddress();

                    messages.append("SMS from ").append(address).append(" :\n");
                    messages.append(body).append("\n");
            }
            }

        Toast.makeText( context, messages.toString(), Toast.LENGTH_SHORT ).show();

    }
}
Код:
package com.prm.priem;


import android.content.ContentResolver;

import android.database.Cursor;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        this.findViewById( R.id.UpdateList ).setOnClickListener(this);

    }

    ArrayList<String> smsList = new ArrayList<String>();

    public void onItemClick( AdapterView<?> parent, View view, int pos, long id )
    {

    }

    public void onClick( View v )
    {
        ContentResolver contentResolver = getContentResolver();
        Cursor cursor = contentResolver.query( Uri.parse( "content://sms/inbox" ), null, null, null, null);

        int indexBody = cursor.getColumnIndex( SMSMonitor.BODY );
        int indexAddr = cursor.getColumnIndex( SMSMonitor.ADDRESS );

        if ( indexBody < 0 || !cursor.moveToFirst() ) return;

       smsList.clear();

        do{
        if (cursor.getString(indexAddr).equals("номер")) {

             String str = "Принятое смс: " + cursor.getString(indexAddr) + "\n" + cursor.getString(indexBody);
             smsList.add(str);
         }

        }while( cursor.moveToNext() );


        ListView smsListView = (ListView) findViewById( R.id.SMSList );
       smsListView.setAdapter( new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, smsList) );
       smsListView.setOnItemClickListener( this );
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }
}
это в манифест
Код:
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />

  <receiver android:name=".SMSMonitor" android:exported="true" >имя класса
            <intent-filter android:priority="100" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 03.11.2018 в 12:51.
илья123456 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решено организация смс оповещения - нужно что бы смс приходили на 2 номера nikorip Perl 2 24.12.2016 13:14
Прием SMS SERG1980 Свободное общение 0 04.10.2007 16:10