2014-10-30 2 views
0

Dropbox 계정을 연결 한 후 로컬 데이터베이스의 데이터 스토어 이름을 수집하고 저장하려고합니다. 내 애플 리케이션을 디버깅 할 때 모두 괜찮아요, 나는뿐만 아니라 데이터 저장소 내부의 모든 이름을 찾을 수 있습니다. 하지만 디버깅하지 않고 앱을 실행하면 데이터베이스가 비어있는 것처럼 보입니다.안드로이드의 Dropbox - listDatastores가 동기화되지 않습니다.

나는 동기화의 문제가 있다고 생각하는데, 누군가 나에게 단서를 줄 수 있을까요? 내 문제에 해당하는 해결책을 찾지 못했습니다.

도와 주셔서 감사합니다. @Greg는 보관 용 웹 사이트에 나에게 말했다으로

private void gatherData(){ 

     db = new SQliteHelper(this) ; 
     Set<DbxDatastoreInfo> datastorePresent = null ; 



     try { 
      datastorePresent = mDatastoreManager.listDatastores(); 
     } catch (DbxException e1) { 
      e1.printStackTrace(); 
     } 

     Iterator<DbxDatastoreInfo> datastoreLoop = datastorePresent.iterator() ; 
     while (datastoreLoop.hasNext()){ 

      TitleList tit = new TitleList(datastoreLoop.next().id) ; 
      tit.setConnectDropbox(); 
      db.addLists(tit); 

     } 

     mDatastoreManager.shutDown(); 

      Intent returnIntent = new Intent(); 
      boolean syncOK = true ; 
      returnIntent.putExtra("result", syncOK) ; 
      setResult(RESULT_OK, returnIntent); 
      finish(); 


    } 
+0

이 동일하거나 유사 가능성 : http://stackoverflow.com/questions/23664650/dropbox-datastore-listdatastores-on-ios 즉, 당신이 호출 될 수있다 SDK가 데이터 저장소에 대해 알고 있기 전에 listDatastores를 사용해야하므로 DBDatastoreManager에서 수신기를 사용하십시오. – Greg

+0

@Greg가 도와 주셔서 감사합니다! 사실이 게시물을 보았지만 안드로이드에서 청취자를 처리하는 방법을 모르겠습니다. 예를 들어 주시겠습니까? – KevHV

+0

여기에있는 자습서에서는 DbxDatastoreManager에 수신기를 추가하는 방법을 보여줍니다. https://www.dropbox.com/developers/datastore/tutorial/android#listeners – Greg

답변

0

리스너를 표시하는 tutorial가 :

문제의 코드의 일부이다. 다른 사람에게 유용 할 수 있으므로, 아래에서 내가 마지막으로 사용한 코드를 찾을 수 있습니다. 이 코드를 실행 가능하게하려면 클래스에 의해 DbxDatastoreManager.ListListener 인터페이스를 구현했는지 확인하십시오.

코드 :

private void gatherData(){ 

     /** 
     * Open the local database 
     * Set a listener on the datastore manager to know when data are synced 
     * 
     */ 
     db = new SQliteHelper(this) ; 
     mDatastoreManager.addListListener(this); 

    } 


    /** 
    * 
    * "onDatastoreListChange" is launched once the listener detects datastore is synced, 
    * Then all datastore names on dropbox server are stored inside of the local database device 
    * 
    * @param arg0 
    */ 
    @Override 
    public void onDatastoreListChange(DbxDatastoreManager arg0) { 

     // TODO Auto-generated method stub 
     Set<DbxDatastoreInfo> datastorePresent = null ; 
     try { 
      datastorePresent = mDatastoreManager.listDatastores(); 
     } catch (DbxException e1) { 
      e1.printStackTrace(); 
     } 


     Iterator<DbxDatastoreInfo> datastoreLoop = datastorePresent.iterator() ; 
     while (datastoreLoop.hasNext()){ 

      TitleList tit = new TitleList(datastoreLoop.next().id) ; 
      tit.setConnectDropbox(); 
      db.addLists(tit); 

     } 

      Intent returnIntent = new Intent(); 
      boolean syncOK = true ; 
      returnIntent.putExtra("result", syncOK) ; 
      setResult(RESULT_OK, returnIntent); 
      finish(); 

    } 
관련 문제