Android:DbxAccountManager.hasLinkedAccount()始终在远程服务上返回false

时间:2014-03-05 02:06:34

标签: android

关于我的活动:

public class MainActivity extends Activity {
private mDbxAccountManager mDbxAccountManager = null;

...

@Override
public void onCreate(Bundle savedInstanceState) {

...

mDbxAccountManager = DbxAccountManager.getInstance(getApplicationContext(), getString(R.string.dbx_app_key), getString(R.string.dbx_app_secret));

...
}

...

public void buttonOnClick(View view) {
if(mDbxAccountManager.hasLinkedAccount()) {
//Do something
}
else {
mDbxAccountManager.startLink(this, 0);
}

...

}



}

在我的远程服务上:

public class CloudService extends Service {
private mDbxAccountManager mDbxAccountManager = null;

@Override
public void onCreate() {

...

mDbxAccountManager = DbxAccountManager.getInstance(getApplicationContext(), getString(R.string.dbx_app_key), getString(R.string.dbx_app_secret));
if(!mDbxAccountManager.hasLinkedAccount()) {
return;
stopSelf();
}

...
}
}

结果是,在使用已安装的Dropbox客户端将我的应用程序与Dropbox链接后,我的Activity上的hasLinkedAccount()返回true,同时我的Remote Service上的相同代码始终返回false。

我还检查了logcat,它显示我的应用已经与dropbox链接。

我怀疑Dropbox API在成功链接到我的应用程序时会创建一些SharedPreferences,但我的Remote Service无法访问或获得该SharedPreferences的缓存版本......我不知道... < / p>

请帮忙......

谢谢

编辑: 如果我重新安装应用程序,那么结果是预期的并且hasLinkedAccount()返回true,但如果我再次卸载并安装导致清除用户数据,那么我再次使用Dropbox链接我的应用程序,然后再次出现相同的奇怪行为。 我做错了什么?我差不多24小时了......

1 个答案:

答案 0 :(得分:0)

解决!!!

尝试并尝试后...... 我得出的结论是,在与dropbox链接的app之前运行的Service将始终获得DbxAccountManager.hasLinkedAccount()返回false。 我尝试通过调用Process.killProcess(myservicePid)来杀死该进程后,我将我的应用程序与Dropbox链接并再次启动该服务并且它可以工作。 所以...我通过在应用程序与dropbox链接之前不启动服务来解决它,只有在已经链接的情况下启动服务,因为服务上的stopSelf()不会终止进程。 我认为这个问题与传递给DbxAccountManager.getInstance()的Context getApplicationContext()有关,我不知道为什么看起来当Dropbox与app链接时,Context不会更新。

谢谢。