<uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  <receiver android:name="MessageReceiver" android:enabled="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> <receiver android:name="CallReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"/> </intent-filter> </receiver>  //     myMessageReceiver = new MessageReceiver(); //     IntentFilter e = new IntentFilter(); //     e.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); //    e.addAction("android.provider.Telephony.SMS_RECEIVED"); //      registerReceiver(myMessageReceiver, e); //        unregisterReceiver(myMessageReceiver);  //     Notification notif = new Notification(R.drawable.ic_launcher, "Notice service started", System.currentTimeMillis()); //       (Activity) Intent intent1 = new Intent(this, NoticeSetting.class); PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0); //   notif.setLatestEventInfo(this, "Notice service enabled", "For stopped it click me", pIntent); //  ,       notif.flags |= Notification.FLAG_ONGOING_EVENT ; //   startForeground(NOTIFICATION_ID, notif ); //    stopForeground(true);  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <receiver android:name=".BootBroadReceiv" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>  public class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // -   } }  phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);  String Name=" "; phoneNumber = PhoneNumberUtils.stripSeparators(phoneNumber); String[] projection = new String[] { ContactsContract.Data.CONTACT_ID, ContactsContract.Contacts.LOOKUP_KEY, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.STARRED, ContactsContract.Contacts.CONTACT_STATUS, ContactsContract.Contacts.CONTACT_PRESENCE }; String selection = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'"; String selectionArgs [] ={ phoneNumber }; Cursor cursor = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, selectionArgs, null); if(cursor.getCount()>0) { cursor.moveToFirst(); Name = cursor.getString(2) + " "; } else Name = "Unknow";  <uses-permission android:name="android.permission.READ_CONTACTS" />  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()); }  InetAddress serv_addr = null; serv_addr = InetAddress.getByName("255.255.255.255"); int port= 35876; DatagramSocket sock = null; sock = new DatagramSocket(); //mess -    byte [] buf = mess.getBytes(); DatagramPacket pack= new DatagramPacket(buf, buf.length,serv_addr,port); sock.send(pack); sock.close();  <uses-permission android:name="android.permission.INTERNET" />  int main() { int z; char srvr_addr[8] = "0.0.0.0"; struct sockaddr_in adr_inet; // AF_INET struct sockaddr_in adr_clnt; // AF_INET socklen_t len_inet; int s; //    char dgram[512]; //  s = socket(AF_INET,SOCK_DGRAM,0); if ( s == -1 ) { displayError("socket()"); } memset(&adr_inet,0,sizeof(adr_inet)); adr_inet.sin_family = AF_INET; adr_inet.sin_port = htons(35876); adr_inet.sin_addr.s_addr =inet_addr(srvr_addr); if ( adr_inet.sin_addr.s_addr == INADDR_NONE ) { displayError("bad address."); } len_inet = sizeof(adr_inet); //  z = bind(s, (struct sockaddr *)&adr_inet, len_inet); if ( z == -1 ) { displayError("bind()"); } while(1) { len_inet = sizeof adr_clnt; //   z = recvfrom(s, dgram, 512, 0, (struct sockaddr *)&adr_clnt, &len_inet); if ( z < 0 ) { displayError("recvfrom(2)"); } dgram[z] = 0; // null terminate if ( !strcasecmp(dgram,"QUIT") ) { break; // Quit server } //dgram    printf("%s\n",dgram);  if (fork() == 0) { execl("/usr/bin/notify-send","notify-send","   :", dgram, (char *) 0); perror("exec one failed"); exit(1); } Source: https://habr.com/ru/post/211921/
All Articles