2013-09-23 6 views
1

간단히 말해서 SMS 메시지를 백업하고 프로그래밍 방식으로 내 안드로이드의 통화 기록을 원합니다 (더 큰 백업 스크립트의 일부로 통합하려고합니다). 이를 수행 할 수있는 "SMS 백업 및 복원"이라는 사용자 응용 프로그램이 있습니다. 내가 시도루트 권한없이 안드로이드 통화 로그 및 SMS를 프로그래밍 방식으로 백업하십시오.

,

adb shell sqlite > dump 

(어떻게? USB 인터페이스에서 앱 실행을 할 수 있습니다) 나는 permission denied를 얻을. 다른 모든 시도는 내가 permission denied으로 충족

data/data/com.sec.android.provider.logsprovider/databases/logs.db 

에 이해 이러한 로그를 액세스하기 위해 데이터베이스를 읽을 수 있습니다.

내가 읽은 것은이 사용 권한 문제를 해결할 수있는 유일한 방법은 지금하고 싶지 않은 장치를 루트하는 것입니다.

adb를 통해이를 수행 할 수있는 방법이 있습니까? 필자가해야한다면 앱을 쓰는 것을 꺼리지 만, 더 간단한 방법이 있는지 알고 싶습니다.

답변

2

/data/data 디렉토리에 액세스하려면 루트 권한이 있어야합니다. 루트가 없다면, MMS-SMS 컨텐트 프로 바이더를 통해 반복하고 자신의 데이터베이스에 결과를 덤프 할 수있는 프로그램을 작성할 수 있습니다 (원하는대로 내보내거나 실행할 수 있음). 등의

예 :

try{ 
    Uri uri = Uri.parse("content://sms"); 
    ContentResolver contentResolver = getContentResolver(); 
    Cursor SMSL = contentResolver.query(uri, null, null, null, "date asc"); 
    while (SMSL.moveToNext()) { 
     long dateTimeMillis = SMSL.getLong(SMSL.getColumnIndex("date")); 
     Integer id1 = SMSL.getInt(SMSL.getColumnIndex("_id")); 
     String body = SMSL.getString(SMSL.getColumnIndex("body")); 
     Integer type1 = SMSL.getInt(SMSL.getColumnIndex("type")); 
     String address = SMSL.getString(SMSL.getColumnIndex("address")); 
     String read = SMSL.getString(SMSL.getColumnIndex("read")); 
     String seen = SMSL.getString(SMSL.getColumnIndex("seen")); 

       //Do whatever with the data here 

     SMSL.close(); 
     }  

     } catch (Exception e){ 
     e.printStackTrace(); 
    } 
관련 문제