1

그래, 이것이 Android 4.4 이상에서 구현 된 보안/유용성 기능이라는 것을 알고 있으며 여기에 여러 번 언급되어 있습니다. 내가 겪고있는 문제는 텍스트 메시징 응용 프로그램을 만들고 싶지 않다는 것입니다. 사실, the only use of texting in my application is so that an outside admin can ping the phone with a text from a specific number, and have a simple "Running" message returned if the application is running. 참고 - 메시지 수신뿐만 아니라 메시지 전송도 감지 할 수 있습니다.받은 편지함에서 메시지를 삭제할 수 없습니다.사용자 지정 기본 SMS 응용 프로그램에서 "기본"공급자 SMS 응용 프로그램으로 메시지 전달

메시지를받은 편지함에 남겨 두지 않아도 기능상의 문제는 없지만 잠시 후 사용자에게는 성가신 메시지가 표시되며 관리자는 백그라운드 형식으로 사용자를 핑하는 것을 좋아합니다. 삭제가 예상대로 작동하지 않기 때문에 항상 내 로그에 Delete error... 메시지를 표시되어

int deletedRows = context.getContentResolver().delete(Uri.parse("content://sms/" + id), "date=?", 
      new String[] { c.getString(4) }); 
if(deletedRows > 0) Log.d(TAG, "Delete success..."); 
else Log.d(TAG, "Delete error..."); 

때문에, 짧은 이야기 너무 오래, 내가 일을하는 새로운 방법을 파악해야합니다.

나는 SMS for KitKat, Getting SMS Apps Ready for KitKatA Similar SO Question (허용 대답이 있음)을 읽었지만 뭔가가 누락 된 것 같습니다. 문제는 모든 문자 메시지를 수신하고, 표시하고, 전송하고, 처리하는 것을 제어 할 필요가 없다는 것입니다. 난 단지 특정 사용자의 특정 메시지를 삭제할 수 있기를 원합니다.

그래서 가장 좋은 해결책은 내 응용 프로그램을 기본 SMS 응용 프로그램으로 사용하고, 필요한 개별 메시지를 삭제하고, 다른 모든 메시지를 내 "기본"공급자 SMS 응용 프로그램으로 전달하는 것입니다. 내가 정확히 (내 열린 우리당/분석 기술이 정말 대단하지 않은)이 작업을 수행하는 방법을 몰라, 내가 내 로그가 올바른 값을 보여줍니다하지만 그것이

Log.d(TAG, "Values to send: " + address + "/" + body); 
ContentValues content = new ContentValues(); 
content.put("address", address); 
content.put("body", body); 
// continue for date, person, etc. 
context.getContentResolver().insert(Uri.parse("content://sms/" + id), content); 

같을 그러나 것이 나에게 보인다 메시지를 보내지 마십시오. 나는 무엇을 놓치고 있는가? (또는 이것에 대해 갈 수있는 더 좋은 방법이 있는가?)

+0

결국 관리 했습니까? 나는이 일을 직접하고 있습니다. ... – TiGer

+0

메시지가받은 편지함에 도착하지 못했습니다. @ 티어 – zgc7009

+0

이것은 정확히 내가 들어있는 시나리오입니다. 혹시 뭔가를 생각해 냈습니까? 받은 편지함에있는 메시지로 생활하는 법을 배웁니다.필자는 전화기를보다 잘 제어 할 수 있으므로 문자 그대로 내 기본 앱에 의도를 전달하고 메시지를 먹는 SMS 앱을 작성할 수 있지만 그렇게하지 않으려 고합니다. (오늘 의제 : KitKat을위한 오픈 소스 SMS 프로젝트 찾기 ...) – JamieB

답변

0

Android (7 이전)의 현재 버전에서는 불가능하다고 생각합니다. 당신은 이전의 기본 SMS 앱으로 메시지를 전달하기 위해 다음 단계가 필요합니다

  1. 쓰기를하면 자신의 SMS 방송 수신기
  2. (android.provider.Telephony.SMS_DELIVER 의도 필터) 매니페스트 파일에있는 SMS 방송 수신기를 등록
  3. SMS 메시지 처리를 허용하는 android.permission.RECEIVE_SMS 권한을 가져옵니다.
  4. 브로드 캐스트 수신기의 onReceive (컨텍스트 컨텍스트, 의도 인 텐트) 처리기를위한 SMS 처리를 처리합니다.
  5. 이전 sms 앱으로 전달 의도를 전달했습니다.

    5.A는 ("이전 응용 프로그램 수신기 클래스 이름" "이전 응용 프로그램 패키지 이름")

    5.b 당신은 안드로이드를 가지고해야 당신이 intent.setClassName를 호출 할 필요가 특정 응용 프로그램에 대한 의도를 전달합니다. 사용자 정의 앱에서 SMS 의도를 브로드 캐스트하는 권한 .BROADCAST_SMS. 그러나 (Surprise !!!)이 권한은 시스템 앱에만 부여 될 수 있습니다.

관련 문제