0

我正在使用带有 Android 的 Box API。我正在使用 Android Studio 并在模拟器上进行测试。

我有一个用于启动 OAuth 请求的按钮,在进行身份验证后,我返回到我的应用程序,并且应该显示一个不同的按钮来执行其他任务(我计划添加获取免费/已用/总空间)。

我正在使用以下代码,但是一旦我返回我的应用程序,另一个按钮就不会出现,如果我点击我的初始按钮,什么也不会发生。

有人可以指出我正确的方向吗?

谢谢。

private void getUserIdUsingBox() {
    BoxConfig.CLIENT_ID = BoxController.BOX_CLIENT_ID;
    BoxConfig.CLIENT_SECRET = BoxController.BOX_SECRET;
    BoxSession session = new BoxSession(this);
    session.authenticate();

} //getUserIdsUsingBox

public void onLinkBox(View view) { getUserIdUsingBox(); }

private void invalidate() {
    StringBuilder msg = new StringBuilder("List of available controllers: ");
    for (Controller controller : mManager.getAvailableControllers()) {
        msg.append("\n" + controller.getClass().getSimpleName());
    }
    mText.setText(msg);

    List<LinkedAccount> linkedAccounts = mManager.getAvailableAccounts();
    for (LinkedAccount acct : linkedAccounts) {
        if (acct.getServiceName().equals(GoogleDriveController.NAME)) {
            mLinkGoogleDriveButton.setVisibility(View.GONE);
            mTestGoogleDriveButton.setVisibility(View.VISIBLE);
        }
        if (acct.getServiceName().equals(DropboxController.NAME)) {
            mLinkDropboxButton.setVisibility(View.GONE);
            mTestDropboxButton.setVisibility(View.VISIBLE);
        }

        if (acct.getServiceName().equals(BoxController.NAME))
        {
            mLinkBoxButton.setVisibility(View.GONE);
            mTestBoxButton.setVisibility(View.VISIBLE);
        }
    }
}
4

1 回答 1

1

正如 greg 所提到的——看看你的 UI 逻辑会很有帮助。但是这样的事情应该有效:

    final Button btnToAuthenticate = (Button) findViewById(R.id.auth_box_btn);
    final Button btnAfterAuthenticate = (Button) findViewById(R.id.box_action_btn);
    BoxConfig.CLIENT_ID = BoxController.BOX_CLIENT_ID;
    BoxConfig.CLIENT_SECRET = BoxController.BOX_SECRET;
    BoxSession session = new BoxSession(this);

    btnToAuthenticate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mSession.authenticate();
        }
    });
    mSession.setSessionAuthListener(new BoxAuthentication.AuthListener() {
        @Override
        public void onRefreshed(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo) {

        }

        @Override
        public void onAuthCreated(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo) {
            btnAfterAuthenticate.setVisibility(View.VISIBLE);
        }

        @Override
        public void onAuthFailure(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo, Exception e) {

        }

        @Override
        public void onLoggedOut(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo, Exception e) {

        }
    });
于 2015-07-11T17:00:40.033 回答