아래 코드를 사용하여 sms에서 메시지를 가져옵니다.Telephony.Sms를 사용하여 잠긴 메시지를 포함하여 모든 대화의 마지막 메시지 만 검색하는 방법?
private List<String> getEveryLastMessages(){
List<String> listSms = new ArrayList<String>();
ContentResolver contentResolver = getActivity().getContentResolver();
Cursor c = contentResolver.query(Telephony.Sms.Inbox.CONTENT_URI, // Official CONTENT_URI from docs
new String[] { Telephony.Sms.Inbox.BODY }, // Select body text
null,
null,
Telephony.Sms.Inbox.DEFAULT_SORT_ORDER); // Default sort order
int totalSMS = c.getCount();
if (c.moveToFirst()) {
for (int i = 0; i < totalSMS; i++) {
listSms.add(c.getString(0));
listSms.add("\n");
c.moveToNext();
}
} else {
//Do something, no messages
}
c.close();
return listSms;
}
내 문제는 잠긴 메시지를 제외한 모든 메시지가 검색되었습니다.
내가 달성하려고 시도하는 것은 잠금 메시지를 포함한 모든 대화의 마지막 메시지 인 만 가져오고이를받은 편지함으로 표시하기 위해 내 recyclerview adapater에 채 웁니다.
흠, 표준 동작처럼 보이지 않습니다. 잠긴 메시지가 수신 된 메시지라는 것을 확신합니까? 즉,받은 편지함에 있는지 확인하십시오. 어떤 Android 버전을 테스트하고 있습니까? 이것이 실제 장치라면, 구체적으로 무엇입니까? 또한, "모든 대화의 마지막 메시지"를 원한다고 명시합니다. 마지막 메시지가 보낸 메시지라면 어떻게 될까요? 귀하의 필요에 따라 [이 게시물] (https://stackoverflow.com/q/42068940) 도움이 될 수도 있습니다. –
그래, 잠긴 메시지는 수신 된 메시지입니다. 잠긴 메시지가받은 편지함에 있는지는 확실하지 않지만 안드로이드의 기본 메신저에는 목록에있는 메시지가 있지만 잠겨 있습니다. 현재 Android Marshmallow에서 테스트하고 있습니다. 그렇습니다. 실제 모델은 INFINIX HOT S X521 인 실제 장치를 사용하고 있습니다. 모든 대화의 마지막 내용 인 경우 마지막 메시지를 보내거나, 보내지 못했거나, 초안을 작성하거나, 잠근 것은 중요하지 않습니다. 고마워, 나는 그 지점을 점검 할 것이다. – Polar
좋아요, 수신/수신함에 대해 묻는 중이었습니다. 전화 걸기에서 '전화 받기. 전화. 연결'을 쿼리하고 있기 때문입니다. Anyhoo는 Marshmallow에서 시작하여 기본이 아닌 앱은 SMS 테이블의 제한된보기에만 액세스 할 수 있으며 _inbox_ 및 _sent_ 메시지 만받을 수 있으므로 앱이 기본 메시징 앱이 아닌 경우 _failed_ 또는 _draft_ 메시지를받지 않습니다. 그러나 _locked_는 그 (것) 들과는 별개의 것이므로, 적어도 표준 API에서는 그 제한된 관점을 생각해서는 안됩니다. 그러나 OEM은이를 변경할 수 있습니다. –