В общем есть вот такой код. Но проблема теперь в следующем. Только без смеха. Как разбить принятое смс на строки и этим строкам присвоить с помощью swich другие значения. Например пришло сообщение 123321123 и разбить его скажем на 3 части типо 123 321 123 и 123 присвоить типо вкл, 321 выкл, 123 пообщайся со мной.
Цитата:
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_REC EIVED";
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.g etAction()) == 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.AppCompatAct ivity;
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 ("+79681280395")) {
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) {
}
}
|