2015-01-12 1 views
5

백업이 Google 드라이브 appdata 폴더에 저장되도록 앱이 설정되었습니다. 그것은 모두 동일한 장치에서 완벽하게 작동합니다. 백업을 만들면 앱의 데이터를 삭제 한 다음 모든 데이터를 복원합니다.Android - 다른 기기의 Google 드라이브 appdata 폴더에 있지만 동일한 앱에 액세스합니다.

그러나 한 장치에서 백업을 시도한 다음 다른 장치에서 설치하고 복원하려고 시도하면 파일이 없습니다. 원래 기기에서 앱을 제거한 후 동일한 기기에 다시 설치하고 복원을 시도 할 때도 마찬가지입니다. 두 경우 모두 Google 드라이브에 로그인 할 때 appdata 폴더에 파일이 있음에도 불구하고 파일을 찾을 수 없습니다.

DRIVE_ID가 장치마다 다르므로 장치간에 작업하기 위해 파일의 DRIVE_ID 대신 RESOURCE_ID를 사용해야한다는 내용을 읽었습니다. 그러나 내가 RESOURCE_ID를 얻는 방법을 본 유일한 방법은 driveId.getResourceId()를 사용하는 것이며 다른 장치에서 적절한 DRIVE_ID를 가져올 수 없습니다.

tl; dr : 다른 장치/설치로 만든 appdata 폴더에서 적절한 파일을 가져 오는 방법은 무엇입니까?

답변

11

내 앱에도 데이터베이스 백업 옵션이 있습니다. 새로운 Google 드라이브 Android Android API를 사용하여 구현했으며 더 중요한 것은 한 기기에서 다른 기기로 완벽하게 작동합니다.

  1. 읽거나 Google 드라이브에 아무것도를 작성하기 전에 모든 동기화 할 requestSync를 호출하고 최신 IT (here를 사용하는 방법) :

    는 여기에 내가 해냈어 내가 추천 어떤 방법입니다.

  2. 식별자 대신 쿼리를 사용하여 이름으로 파일을 검색하십시오. Google 드라이브는 이름이 같은 여러 개의 파일을 허용하므로 날짜별로 쿼리를 정렬하고 최신 쿼리를 사용하십시오.
  3. 같은 이름의 백업 파일을 여러 개 만들지 않으려면 검색어를 사용하여 백업 파일이 Google 드라이브에 이미 존재하는지 확인하고, 있으면 백업 파일을 열고 덮어 씁니다.
  4. 이것은 내가 좋아하지 않을 것이라고 생각하는 지점입니다. Appfolder ...를 사용하지 않는 것이 좋습니다. Google은 앱을 제거하고 다시 설치할 때 동기화 문제가있을 수 있음을 확인했습니다. 내 앱에서 Appfolder를 사용하려고 시도했지만 성공하지 못했지만 결국 Google 드라이브에 일반 폴더가 만들어졌습니다. 그렇게 말하면,이 세 가지를 채택하기 전에 처음 세 가지 권장 사항을 시도해 볼 수 있습니다.

이 점이 구현에 도움이되기를 바랍니다. 다른 것이 필요하면 알려주세요.

+0

불행히도 당신은 아마 맞을 것입니다. 지금은 일반 폴더 만 사용하고 사용자는 그것이 쓰레기라고 생각하지 않고 삭제할 수 있기를 바랍니다. 그들은 그것이 haha에 내 애플 리케이션의 이름을 가질 것이기 때문에 그들은 안된다. 감사! –

+0

재미있는 점은, GDAA 앱을 삭제하면 며칠 동안 볼 수 있기 때문에 GDAA 앱이 사망했을 때 다시 되돌릴 수있는 충분한 시간이 있다는 것입니다. 심지어 isTrashed() 플래그를 표시하지 않습니다. 당신은 그것에 쓰기/파일을 만들 수 있습니다. 사용자가 휴지통을 비우더라도 문제가 해결 될 때까지 계속 볼 수 있지만 1 년 후부터 다가오고 있으므로 영구 기능이 될 수 있습니다. http://stackoverflow.com/questions/22515028을 참조하십시오. – seanpj

+0

정정하자면, 당신의 안드로이드 앱은 그것이 사라 졌다는 단서가 없기 때문에 실제로 그것을 죽음으로부터 되돌릴 수 없습니다. 따라서 며칠 후까지 행복하게 사용할 수 있습니다 ... 이제는 N 일간의 모든 데이터가 사라졌습니다. – seanpj