Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
74 / 48 / 27
Регистрация: 25.03.2014
Сообщений: 357
Записей в блоге: 1
1

Массивы в андроид студио

03.11.2018, 12:37. Показов 1008. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем есть вот такой код. Но проблема теперь в следующем. Только без смеха. Как разбить принятое смс на строки и этим строкам присвоить с помощью swich другие значения. Например пришло сообщение 123321123 и разбить его скажем на 3 части типо 123 321 123 и 123 присвоить типо вкл, 321 выкл, 123 пообщайся со мной.
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
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();
 
    }
}
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
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) {
 
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2018, 12:37
Ответы с готовыми решениями:

Установка андроид студио
Все было сделано как по инструкции. Написал в командной строке(от имени администратора) mklink /D...

Воспроизведение музыки в андроид студио
Всем привет. Подскажите как убрать проблему с тем что ругается на R.raw.music в этом коде? ...

Как объявить переменную в Андроид Студио?
Не кидайте тапками, если вопрос сильно глупый) Осваиваю Андроид Студио по урокам Александра Климова...

Как импортировать скаченный проект в андроид студио
Просто File - Open и выбрать на компьютере?? А как узнать версию андроида на которой...

3
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
04.11.2018, 14:20 2
message.substring(...)
0
74 / 48 / 27
Регистрация: 25.03.2014
Сообщений: 357
Записей в блоге: 1
04.11.2018, 14:24  [ТС] 3
а цикл разве не нужен типо for i=0 и т.д? просто я понял что нужно вставить сюда типо, но как не понял((((
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
  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 );
    }
0
74 / 48 / 27
Регистрация: 25.03.2014
Сообщений: 357
Записей в блоге: 1
05.11.2018, 13:59  [ТС] 4
Цитата Сообщение от ExFau$t Посмотреть сообщение
message.substring(...)
В общем сделал так и он выводит как надо только первое смс, но как же остальные так же сделать не пойму вот как я пытался сделать через if
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
  if (indexBody < 0 || !cursor.moveToFirst()) return;
       // String bo = getString(indexBody);
 
        smsList.clear();
        int y = 0,x, k=0;
        do {
            if (cursor.getString(indexAddr).equals("+79681280395")) {
 
                String bi = cursor.getString(indexBody);  //k  с какого символа начинать, x количество символов от начала
                for (x = 2 ; x!=6; ) {
 
                    String str = "Принятое смс: " + cursor.getString(indexAddr) + "\n" + bi.substring(k, x);
                    smsList.add(str);
                    if (x==6) {
                        x=2;
                    }else {
                        k = y + 2;
                        x = x + 2;
                    }
 
                //switch (bi) { }
                }
            }
        } while (cursor.moveToNext());
Но потом понял, что не вариант так как, как он потом остановится не знаю. Сделал чтобы прыгал через 2, но в реале потом будет прибавлять 3. Я так подумал что сначала от 0 до 2 начиная с 0, потом от 3 до 5 начиная 3 и т.д
0
05.11.2018, 13:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2018, 13:59
Помогаю со студенческими работами здесь

Как прописать математическую формулу в андроид студио
Добрый день. я новичок в программировании и в джава в частности. Помогите разобраться как написать...

Как создать пользовательский стиль в андроид студио?
Предположим у меня есть XML фаил, который содержит в себе разметку Progress Bar. &lt;?xml...

Андроид Студио ругается на импорт javax.sound.*
Столкнулся с проблемой: Андроид студио ругается на импорт import...

Бесплатная рад студио под андроид
Здравствуйте! Сейчас эмабркадора предоставляет бесплатную урезанную версию, вот у меня вопрос,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru