짧 은 컬러 메시지 세 션 목록 가 져 오기content://mms-sms/conversations
http://topic.csdn.net/u/20100804/12/67607078-e17c-4afc-8228-9dcf9a366b03.html?seed=1998627157&r=76024741#r_76024741 안 드 로 이 드 의 문자 메 시 지 는 정식 콘 텐 츠 provider 가 사용 할 수 없 으 며 공식 문서 에서 정 의 를 제공 하지 않 았 습 니 다.하지만 URI 를 스스로 정의 하고 문자 내용 을 조회 할 수 있다.예컨대conetent://sms모든 문자 가 있 는 path 입 니 다.
문 자 를 세 션 별로 분류 하려 면 원래 나 는 모든 문 자 를 조회 한 후에 threadid 분류.시스템 자체 메시지 프로그램 은 세 션 디 스 플레이 인터페이스 를 포함 하고 각 항목 은 연락처, 문자 수량, 첫 번 째 문자 등 내용 을 포함한다.내 프로그램 이 처리 하 는 문자 가 많 을 때 한 번 에 모든 문 자 를 조회 하 는 것 이 느 려 진다.(세 션 마다 연락처 정 보 를 조회 하면 더 느 립 니 다)
시스템 문자 코드 를 보 니 모든 문자 내용 을 조회 하지 않 고 세 션 정보 만 조회 할 수 있 었 다.일부 코드 를 찾 지 못 해서 어떻게 했 는 지 몰 랐 다.telphony provider 의 코드 를 보고 나 서 야 하나, 둘 을 알 게 되 었 다.
실제로 문자 데이터베이스 (mmssms. db) 에는 세 션 정 보 를 저장 하 는 표 가 하나 도 없다.
시스템 이 제공 하 는 content provider 에 서 는 세 션 정 보 를 직접 조회 하 는 것 을 지원 합 니 다.다만, 그 실현 방식 은 기 존의 표 가 아니 라 SQL 문 구 를 통 해 여러 표 에서 데 이 터 를 추출 하여 완성 한 것 이다.이 실현 방식 에 대해 서 는 이 게시 물 에서 도 언급 됐다.
실현 방식 은 깊이 연구 하지 않 는 다. 왜냐하면 나 는 SQL 조회 에 대해 잘 모 르 기 때문이다.직접 사용 방법:
public static final Uri MMSSMS_FULL_CONVERSATION_URI = Uri.parse("content://mms-sms/conversations");
public static final Uri CONVERSATION_URI = MMSSMS_FULL_CONVERSATION_URI.buildUpon().
appendQueryParameter("simple", "true").build();
simple = true 를 지정 하면 다음 과 같은 대략적인 세 션 데 이 터 를 추출 할 수 있 습 니 다.
private static final int ID = 0;
private static final int DATE = 1;
private static final int MESSAGE_COUNT = 2;
private static final int RECIPIENT_IDS = 3;
private static final int SNIPPET = 4;
private static final int SNIPPET_CS = 5;
private static final int READ = 6;
private static final int TYPE = 7;
private static final int ERROR = 8;
private static final int HAS_ATTACHMENT = 9;
열 이름: threads 표 죠?
private static final String[] ALL_THREADS_PROJECTION = {
"_id", "date", "message_count", "recipient_ids",
"snippet", "snippet_cs", "read", "error", "has_attachment"
};
참고:
http://stackoverflow.com/questions/3012287/how-to-read-mms-data-in-android
그 중:
_id
is the ID of the message. Captain obvious to the rescue? Not really. This ID can be used to retrieve detailed information using either content://sms
or content://mms
. body
The content of the last SMS on this conversation. If it's an MMS, even if it has a text part, this will be null
. thread_id
is the ID of the conversation date
no explanation needed. content://mms-sms/conversations
하면 각 대화 에서 마지막 SMS 또는 MMS 인 다른 대화 목록 을 반환 합 니 다. 쿼 리 _id
하면 ID 가 있 는 대화 에서 각 SMS 및 / 또는 MMS 를 반환 합 니 다 content://mms-sms/conversations/xxx
. 1. messagecount 는 이 세 션 의 메시지 수량 입 니 다.2、recipient_ids 는 연락처 ID 입 니 다. 이 ID 는 연락처 표 의 가 아 닙 니 다.지향 표 canonical_address 의 id, canonicaladdress 이 표 역시 mmssms. db 에 있 습 니 다. recipient 를 비 추 었 습 니 다.ids 에서 전화번호 로 갑 니 다. 즉, 최종 적 으로 연락처 정 보 를 얻 으 려 면 전화 번 호 를 통과 해 야 합 니 다. 3. snippet 가 마지막 으로 받 거나 보 낸 문자;모든 데이터 의 유형 은 대체적으로 다음 과 같다. long id = cursor.getLong(ID);
long date = cursor.getLong(DATE);
long msgCount = cursor.getLong(MESSAGE_COUNT);
String recipIDs = cursor.getString(RECIPIENT_IDS);
String snippet = cursor.getString(SNIPPET);
long snippetCS = cursor.getLong(SNIPPET_CS);
long read = cursor.getLong(READ);
long type = cursor.getLong(TYPE);
long error = cursor.getLong(ERROR);
long hasAttach = cursor.getLong(HAS_ATTACHMENT);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[TIL] #8. 프로그래머스 String, Date전달받은 문자열의 길이를 반환한다. 만약 전달받은 문자열 중 하나라도 NULL이 존재하면, NULL을 반환한다. 인수로 전달받은 문자열이 특정 문자열에서 처음 나타나는 위치를 찾아서, 해당 위치를 반환한다. 만약 전...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.