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