Android 프로젝트 는 문자 발송,수신,문자 차단 을 실현 합 니 다.

솔직히 안 드 로 이 드 에서 문자 에 대한 조작 은 비교적 입문 적 인 것 이다.그럼 제 가 지금 이 블 로 그 를 써 야 하 는 이 유 는 현재 개발 중 에 관련 내용 이 있 기 때 문 입 니 다.그리고 이 물건 들 을 더 많은 사람들 에 게 공유 하고 싶 기 때 문 입 니 다.그리고 앞으로 안 드 로 이 드 시스템 의 문자 메 시 지 를 다른 공 부 를 할 때 여기에 기록 을 해 두 었 기 때 문 입 니 다.그래서 이 시 끄 러 운 글 을 썼 습 니 다.만약 당신 이 이것 이 괜 찮 은 물건 이 라 고 생각한다 면,나중에 본인 이 이 글 에서 업데이트 한 내용 을 더욱 편리 하 게 볼 수 있 도록 소장 하 는 것 을 환영 합 니 다.다음은 제목 의 세 가지 측면 에서 안 드 로 이 드 시스템 의 문자 조작 에 대해 간단하게 공부 하 겠 습 니 다.
문자 발송
안 드 로 이 드 에 서 는 문자 발송 방법 에 대한 우수한 패키지 로 인해 문자 발송 에 대한 개발 이 매우 간단 해 졌 다.

public static void sendMessage(Context context, String content, String phoneNumber) { 
    SmsManager sms = SmsManager.getDefault(); 
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(), 0); 
    sms.sendTextMessage(phoneNumber, null, content, pi, null); 
  } 
 권한 문제 가 있다 는 것 을 잊 지 마 세 요: 

<uses-permission android:name="android.permission.SEND_SMS" /> 
문자 수신
짧 은 정보의 수신 은 상대 적 으로 복잡 할 수 있다.복잡 한 원인 도 쉽게 이해 해 야 한다.받 아들 이 는 것 은 통제 할 수 없다.그 러 니까 우리 핸드폰 에 언제 문자 가 올 지 모 르 는 거 야.너무 수 동적 이기 때문에 안 드 로 이 드 의 메커니즘 에 탄복 할 정도 로 강 한 것 이 나 타 났 다.그것 이 바로 방송 수신 자 이다.우 리 는 라디오 수신 자 를 등록 한 후에 이 방송 수신 자 에 게 짧 은 정보 가 도착 하 는 지 여 부 를 시시각각 감청 하 게 했다.이렇게 수 동적 촉발 사건 은 완벽 하 게 해결 되 었 다.다음은 이 과정 을 살 펴 보 자.

public void onReceive(Context context, Intent intent) { 
     
    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { 
      Bundle bundle = intent.getExtras(); 
       
      Object messages[] = (Object[]) bundle.get("pdus"); 
      SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
      for (int n = 0; n < messages.length; n++) { 
        smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
      } 
      showToast(context, "    : " + smsMessage[0].getMessageBody()); 
    } 
  } 
권한 추가:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
그리고 manifest 에서 정적 등록 을 진행 합 니 다:

<receiver android:name=".broadcast.SMSReceiver" > 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
    </receiver> 
문자 메시지 차단
문자 메 시 지 를 받 을 수 있 는 기초 위 에서 문자 차단 을 하 는 것 은 오히려 훨씬 간단 하 다.받 을 수 있 기 때문에 저 는 첫 번 째 로 받 은 사람 이 되 고 받 은 문 자 를 더 이상 아래로 전파 하지 않 으 면 짧 은 메 시 지 를 차단 할 수 있 습 니 다.
우선권 증가:

전파 차단:

문자 삭제
다음은 문자 관련 협의.
content://sms/inbox    수신 함
content://sms/sent    발송 됨
content://sms/draft    초고
content://sms/outbox    발송 함
content://sms/failed    발송 실패
content://sms/queued    발송 대기 목록
수신 함 을 예 로 들 어 문자 삭제 코드 는 다음 과 같다.
메시지 에 특정한 필드 가 포 함 된 문 자 를 삭제 합 니 다.

public void deleteSMS(String smscontent) { 
    ContentResolver CR = getContentResolver(); 
    try { 
      //           uri   
      Uri uri = Uri.parse("content://sms/inbox"); 
       
      //             
      Cursor cursor = CR.query(uri, new String[] { "_id", "address", "person", "body", "date", "type" }, null, null, null); 
      int count = cursor.getCount(); 
      if (count > 0) { 
        while (cursor.moveToNext()) { 
          String body = cursor.getString(cursor.getColumnIndex("body"));//        
          if (body.contains(smscontent)) { 
            int id = cursor.getInt(cursor.getColumnIndex("_id")); 
            CR.delete(Uri.parse("content://sms"), "_id=" + id, null); 
          } 
        } 
      } 
 
    } catch (Exception e) { 
      Log.v("e", e.getMessage()); 
    } 
  } 
최신 문자 메시지 에 따라 정보 삭제(삭 제 된 대상 은 문자 가 아 닌 연락처)

public void deleteSMS() { 
    ContentResolver CR = getContentResolver(); 
    //             
    Cursor cursor = CR.query(Uri.parse("content://sms/inbox"), new String[] { "_id", "thread_id" }, null, null, null); 
    if (cursor != null) { 
      cursor.moveToFirst(); 
      int a = cursor.getCount(); 
      int b = cursor.getColumnCount(); 
      long threadId = cursor.getLong(1); 
      CR.delete(Uri.parse("content://sms/conversations/" + threadId), null, null); 
    } 
  } 
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기