1

box-api を使用して電話からファイルをアップロードするアプリケーションを作成しました。次の方法でユーザーを認証します。

Intent intent = new Intent(this, BoxAuthentication.class);
intent.putExtra("API_KEY", Version.BOX_API_KEY);
startActivityForResult(intent, BOX_RESULT);

そして、次の方法でトークンが返されます。

if (resultCode == BoxAuthentication.AUTH_RESULT_SUCCESS)
{
   if(data.getStringExtra("AUTH_TOKEN") != null) {
      writeStringPref(Global.boxToken, data.getStringExtra("AUTH_TOKEN"), getApplicationContext());
   } else { 
      toast("An error occured authenticating, please try again"); finish();
   }
} else if (resultCode == BoxAuthentication.AUTH_RESULT_FAIL) {
   toast("Unable to log into Box"); finish();
}

私のアップロード方法では、次の方法でボックスを呼び出します。

final Box box = Box.getInstance(Version.BOX_API_KEY);

次に、次の方法でファイルをアップロードするフォルダーを作成します。

box.createFolder(token, 0l, Global.folderName, true, new CreateFolderListener(){
            @Override
            public void onIOException(IOException e) {
                        //HANDLE
            }

            @Override
            public void onComplete(BoxFolder boxFolder, String status) {
               //DO STUFF
                    }
        );

私が抱えている問題は、ユーザーが初めて認証したときに、保存されたトークンを使用してファイルをアップロードできることです。しかし、たとえば、1 時間後にフォルダーを作成するための呼び出しを行うと、ハングしているように見えます。何も返されず、リスナーのメソッドも呼び出されません。

これは、コードの更新をデバイスにプッシュしたときにも発生するようで、動作を停止し、唯一の解決策はユーザーを再認証することです。ドキュメントを読むと、トークンの有効期限が切れないようで、何も返されないため、無効ではないようです。

それが違いを生む場合、私はインテントサービスを介してこのコードを呼び出しています。

誰でも問題が何であるか考えていますか?

4

1 に答える 1

1

これを自分で解決しました..メインスレッドにないインテントサービスからボックスを呼び出していたので、ボックスAPIを呼び出すときに、基本的にバックグラウンドスレッドからバックグラウンドスレッドを呼び出していました..理由がわかりません時々機能し、他の機能は機能しませんでしたが、ハンドラー(メインスレッド)を使用し、それを介してbox-apiを呼び出すと、問題が解決したようです。

于 2013-01-01T22:04:27.827 に答える