рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдХреЙрд▓ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛

рдореИрдВ рдЬрд┐рд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕ рдкрд░ рдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ред рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЙрдкрд▓рдмреНрдз рдкреБрд╕реНрддрдХреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдХрд╛рд░реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреБрдЪреНрдЫ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХрдИ рдХрд┐рддрд╛рдмреЗрдВ рдпрд╛ рд▓реЗрдЦ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╢рдмреНрдж рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рд╢рд╛рдпрдж рдпрд╣ рдореЗрд░рд╛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬрдм рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗ рд░рд╣рд╛ рд╣реВрдВ
рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЗрд╖реНрдЯрддрдорддрд╛ рдХрд╛ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЦреБрдж рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реВрдВ


рдЗрдирдмреЙрдХреНрд╕ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ



рд╕рдВрднрд╡рддрдГ рдЗрд╕ рднрд╛рдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рдЖрд╕рд╛рди рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ, рд╣рдо рд╕рдВрджреЗрд╢ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 


рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреА рдШрдЯрдирд╛ рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛

 <receiver android:name="MessageReceiver" android:enabled="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ MessageReceiver рд░рд┐рд╕реАрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирдореВрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:

 public class MessageReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); SmsMessage[] msgs = new SmsMessage[pdus.length]; ArrayList<String> numbers = new ArrayList<String>(); ArrayList<String> messages = new ArrayList<String>(); for (int i=0; i<msgs.length; i++){ //     msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); numbers.add(msgs[i].getOriginatingAddress()); //   messages.add(msgs[i].getMessageBody().toString());//   } if (messages.size() > 0){ // -   } } } } 


рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдореИрд╕реЗрдЬ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ



рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдирдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЯреЗрд▓реАрдлреЛрдиреА рдПрдкреАрдЖрдИ рдПрдХ рдЕрд▓рдЧ рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рдШрдЯрдирд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдореНрдорд╛рдирд┐рдд рдЙрддреНрдкрд╛рдж рдореЗрдВ рдмрд╣реБрдд рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╣реИред рдлрд┐рд░ рднреА, рдПрдХ рд╕рдорд╛рдзрд╛рди рдЕрднреА рднреА рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ, рд╕рдВрджреЗрд╢ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

 <uses-permission android:name="android.permission.READ_SMS"/> 


рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдЖрдзрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдирд╛ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рдЖрдк рдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рд╣реА рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╢ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╕рдВрджреЗрд╢ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЖрджрд┐рдо рдЬрд╛рдВрдЪ рджрд┐рдЦрд╛рддрд╛ рд╣реИ

 private static final String CONTENT_SMS = "content://sms/"; private static long id = 0; //     ContentResolver contentResolver = getBaseContext().getContentResolver(); contentResolver.registerContentObserver(Uri.parse(CONTENT_SMS),true, new OutgoingSmsObserver(new Handler())); private class OutgoingSmsObserver extends ContentObserver { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Uri uriSMSURI = Uri.parse(CONTENT_SMS); Cursor cur = getContentResolver().query(uriSMSURI, null, null,null, null); cur.moveToNext(); String protocol = cur.getString(cur.getColumnIndex("protocol")); if(protocol == null){ long messageId = cur.getLong(cur.getColumnIndex("_id")); //       - if (messageId != id){ id = messageId; int threadId = cur.getInt(cur.getColumnIndex("thread_id")); Cursor c = getContentResolver().query(Uri.parse("content://sms/outbox/" + threadId), null, null, null, null); c.moveToNext(); //   String address = cur.getString(cur.getColumnIndex("address")); //   String body= cur.getString(cur.getColumnIndex("body")); // -   } } } } 


рдХреЙрд▓ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ



рдПрдВрдбреНрд░реЙрдЗрдб рдПрдХреНрд╢рди android.intent.action.PHONE_STATE рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреЛрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореБрдЭреЗ рдПрдХ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХрд╛ рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдлрд╝реЛрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 


рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреА рдШрдЯрдирд╛ рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛

 <receiver android:name="CallReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"/> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> 


рдирдореВрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:

 String phoneNumber = ""; public class CallReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) { //   phoneNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER"); } else if (intent.getAction().equals("android.intent.action.PHONE_STATE")){ String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); if (phone_state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { // ,    phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); } else if (phone_state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){ //     (  / ) } else if (phone_state.equals(TelephonyManager.EXTRA_STATE_IDLE)){ //    .      ,         } } } } 


рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЬреЛ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрддрд╛рдИ рдереАрдВ, рдлрд┐рд░ рд╕реЗ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдзреВрд░реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рдХреА рднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝реАред рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрджреЗрд╢ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрд╡рд░реЛрдзрди рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣реА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЗрдирдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ, рддреЛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рд╕рд░рд▓рддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

Source: https://habr.com/ru/post/In162181/


All Articles