안드로이드 프로그래밍 방식으로 에스엠에스 삭제

I want to 삭제하시겠습니까 자동으로 일부 특정 에스엠에스 내 안드로이드 응용 프로그램. 따라서 나는 메서드입니다 않는 경우에만 배포하십시오 정확히 내가 원하는 일을 할 수 있지만 내가 내 전화를 응용 프로그램을 직접 진행한다. 그런 다음 규칙수신되는 deletes 에스엠에스. 하지만 그래도 작동하지 않을 경우 응용 프로그램이) 에서 다운로드할 수 있다. 하지만 역시 오류가 없습니다. 내가 어떻게 이 문제를 해결할 수 있는 장치가 작동하지 않거나 이 문제는 한다고 아는 사람 있어요?

public void deleteSMS(Context context, String message, String number) {
    try {
        mLogger.logInfo("Deleting SMS from inbox");
        Uri uriSms = Uri.parse("content://sms/inbox");
        Cursor c = context.getContentResolver().query(uriSms,
            new String[] { "_id", "thread_id", "address",
                "person", "date", "body" }, null, null, null);

        if (c != null && c.moveToFirst()) {
            do {
                long id = c.getLong(0);
                long threadId = c.getLong(1);
                String address = c.getString(2);
                String body = c.getString(5);

                if (message.equals(body) && address.equals(number)) {
                    mLogger.logInfo("Deleting SMS with id: " + threadId);
                    context.getContentResolver().delete(
                        Uri.parse("content://sms/" + id), null, null);
                }
            } while (c.moveToNext());
        }
    } catch (Exception e) {
        mLogger.logError("Could not delete SMS from inbox: " + e.getMessage());
    }
}
질문에 대한 의견 (4)
해결책

사실 이 코드 내 게시물로의 100% 가 맞습니다. 이 문제는 안드로이드 요구를 받은 에스엠에스 저장할 수 있는 시간이 걸릴 것으로 보인다. 그래서 해결 방법은 추가하기만 핸들러 및 삭제 요청을 지연입니다 (1 또는 2 초.

사실은 이 모든 문제를 해결했다.

편집 (덕분에 막심 드미트리예프):

39, SMS 메시지를 함께 하는 고려해보십시오 can& desktopplatforms t 삭제하시겠습니까 장치의 안드로이드 4.4.

&gt. 또한 시스템 기본 app 만 쓸 수 있지만, 이제 다른 앱을 언제든지 데이터를 공급자입니다 메시지를 읽을 수 있습니다.

http://developer.android.com/about/versions/kitkat.html

하면 될 것이며 예외일 수 없다. 아무것도아니야 삭제됩니다. 이제 막 테스트됨 it on 2 에뮬레이터.

프로그램을 통해 SMS 메시지를 전송하는 방법

해설 (2)

T , # 39 의 SMS 메시지를 삭제하시겠습니까 고려해보십시오 can& desktopplatforms 수 있는 장치의 안드로이드 4.4.

&gt. 또한 시스템 기본 app 만 메시지 데이터를 쓸 수 있습니다 &gt. 하지만, 기타 애플리케이션 다운스트림에서 공급자입니다 언제든지 볼 수 있다.

http://developer.android.com/about/versions/kitkat.html

하면 될 것이며 예외일 수 없다. 아무것도아니야 삭제됩니다. 이제 막 테스트됨 it on 2 에뮬레이터.

프로그램을 통해 SMS 메시지를 전송하는 방법

해설 (1)

야 이 코드를 사용하여 에스엠에스 사용자정의할 삭제할 수 있습니다.

  1. 날짜별로
  2. 번호로
  3. 바디입니다 의해

try { Uri 우리스마스 = 우리드패스 (content://sms/inbox&quot ";). 커서 () (c = 콘테스트롬제콘텐트레솔버 이케리 우리스마스, [], {&quot _id&quot ";;, 새로운 문자열이어야 thread_id&quot address";; person&quot &quot &quot. , &quot &quot date&quot body"; },, null null 0&quot &quot 읽기 =);

if (null = c! &amp &; 크리스토퍼 로베토퍼스트 () { 책임질래 { 긴 id = 크리스토퍼제롱 (0); 긴 트레이디드 = 크리스토퍼제롱 (1). 구체화하십시오 주소 = 크리스토퍼제스트링 (2). 구체화하십시오 바디입니다 = 크리스토퍼제스트링 (5). 문자열을 날짜 = 크리스토퍼제스트링 (3). 로고드레 (,,, &quot &gt &gt log&gt &quot. &quot 0-&gt ";; + 크리스토퍼제스트링 (0) + &quot 1-&gt ";; + 크리스토퍼제스트링 (1)

  • &quot 2-&gt ";; (2) + + 크리스토퍼제스트링 &quot 3-&gt ";; (3) + + 크리스토퍼제스트링 &quot 4-&gt ";; + 크리스토퍼제스트링 (4)
  • &quot 5-&gt ";; + 크리스토퍼제스트링 (5)); 로고드레 (,,,, &quot &quot log&gt &gt &gt &quot date&quot. + 크리스토퍼제스트링 (0));

콘텐트발 주 값 = new 콘텐트발 주 (); 발 주스푸스 (&quot read&quot,, 진정한 의미의). 자우프다테 제콘텐트레솔버 () (우리드패스 (content://sms/&quot ";) 값뿐만 &quot _id = "; + id, null).

if (메사게. 퀄스 (본문) &amp &; 이드리스 s. 퀄스 (숫자) { // 마로거트로긴포 (&quot, 삭제에서 에스엠에스 (id: &quot. + 트레이디드); 콘테스트롬제콘텐트레솔버 오드레티 (() 우리드패스 (&quot content://sms/"; + id), &quot &quot,, 날짜 =? (4)} {크리스토퍼제스트링 새로운 문자열 []). 로고드레 (";;;;; &quot log&gt &gt &gt &quot success.&quot 삭제하시겠습니까;). } } 낼수있지않나 (크리스토퍼 로베토네스트 ()); } (예외 e) {} catch 로고드레 (,,, &quot log&gt &gt &gt &quot 에스토스트링 ()); }

해설 (3)

App 의 경우 4.4+ 선택할 수 있습니다 기본값입니다 에스엠에스 앱 및 애플리케이션 (앱) 으로 설정되어 에스엠에스 삭제하시겠습니까 기본 수 있을지 잘 알려져 있다.

해설 (0)

기본값으로 만들기 위해 앱 어플리케이션 이 슬라이드에서는. 확인란 app 가 기본 app 경우 에스엠에스 삭제하기 전에. 이날 전화 클래스를 사용하여 제공하는 대신 하르코딩.

public void deleteSMS(Context context,int position)
{
    Uri deleteUri = Uri.parse(Telephony.Sms.CONTENT_URI);
    int count = 0;
    Cursor c = context.getContentResolver().query(deleteUri, new String[]{BaseColumns._ID}, null,
            null, null); // only query _ID and not everything
        try {
              while (c.moveToNext()) {
                // Delete the SMS
                String pid = c.getString(Telephony.Sms._ID); // Get _id;
                String uri = Telephony.Sms.CONTENT_URI.buildUpon().appendPath(pid)
                count = context.getContentResolver().delete(uri,
                    null, null);
              }
        } catch (Exception e) {
        }finally{
          if(c!=null) c.close() // don't forget to close the cursor
        }

   }

이 모두 삭제 (메일박스와, outbox, 드래프트), 단문메시지서비스 (sms).

해설 (2)
private int deleteMessage(Context context, SmsMessage msg) {
    Uri deleteUri = Uri.parse("content://sms");
    int count = 0;
            @SuppressLint("Recycle") Cursor c = context.getContentResolver().query(deleteUri, null, null, null, null);

    while (c.moveToNext()) {
        try {
            // Delete the SMS
            String pid = c.getString(0); // Get id;
            String uri = "content://sms/" + pid;
            count = context.getContentResolver().delete(Uri.parse(uri),
                    null, null);
        } catch (Exception e) {
        }
    }
    return count;
}

이 코드를 사용하여.

또는

getContentResolver().delete(Uri.parse("content://sms/conversations/" + threadIdIn), null, null);
해설 (1)

안드로이드 앱 전화 및 sms 메시지가 나타나는 스케쳐내 너회의 didn& # 39, 이진 (데이터) 장치를 사용하여 에스엠에스 통지용 보내지 않는다. 이 링크를 참조 http://codetheory.in/android-sms/

해설 (0)