0

編集: 認証済みボックス クライアントとビットマップ バイトストリームを渡す関数を作成しました。また、Box のルート ディレクトリの ID が 0 であることも知らされました。しかし、まだアップロードできません。

私がする必要があるのは、ディレクトリを作成することです。存在しない場合は、そのディレクトリにファイルをアップロードしてください。

private void doUpload(final BoxAndroidClient client, final ByteArrayInputStream bs) {


    if(client.isAuthenticated())
    {
        System.out.println("Trying to upload: In upload function");

         AsyncTask<Null, Integer, Null> task = new AsyncTask<Null, Integer, Null>() {

                @Override
                protected void onPostExecute(Null result) {
                    Toast.makeText(PagerActivity.this, "done uploading", Toast.LENGTH_LONG).show();
                    super.onPostExecute(result);
                }

                @Override
                protected void onPreExecute() {
                    Toast.makeText(PagerActivity.this, "start uploading", Toast.LENGTH_LONG).show();
                    super.onPreExecute();
                }

                @Override
                protected Null doInBackground(Null... params) {


                    try {
                        BoxDefaultRequestObject folreqObj = new BoxDefaultRequestObject();

                        BoxFolder newFol = new BoxFolder();
                        String parentId = newFol.getId();

                        BoxFileUploadRequestObject requestObj = BoxFileUploadRequestObject.uploadFileRequestObject("0", "bestphotonow.png", bs);
                        client.getFilesManager().uploadFile(requestObj);
                        /*
                        if(client.getFoldersManager().getFolder(parentId, folreqObj).getName()!=null)
                        {
                            BoxFileUploadRequestObject requestObj = BoxFileUploadRequestObject.uploadFileRequestObject(parentId, "bestphotonow.png", bs);
                            client.getFilesManager().uploadFile(requestObj);

                        }
                        else

                        {
                            BoxFolderRequestObject upreqObj = BoxFolderRequestObject.createFolderRequestObject("BestPhotoNow", parentId);
                            client.getFoldersManager().createFolder(upreqObj);
                            BoxFileUploadRequestObject requestObj = BoxFileUploadRequestObject.uploadFileRequestObject(parentId, "bestphotonow.png", bs);
                            client.getFilesManager().uploadFile(requestObj);
                        }*/




                    } catch (BoxRestException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (BoxJSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (BoxServerException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (AuthFatalFailureException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }



                    return null;
                }
            };
            task.execute();
        }


}

だから、サーバーからいくつかの画像を取得する壁紙アプリがあります。現在のビュー (viewpager) の画像を Box Android API v2 経由で Box にアップロードできるように box を統合しようとしています。

https://github.com/box/box-android-sdk-v2

oauth 経由でユーザーの認証に成功しました。しかし、フォルダー ピッカー アクティビティを起動することなく、ビットマップまたは uri をアップロード呼び出しに直接アップロードしようとすることに本当に行き詰まっています。これは私が持っているものです。

アップロード用のボタンをクリックすると:

case R.id.boxcloudbutton:
        imageLoader.loadImage(url, new SimpleImageLoadingListener(){
            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

                Intent intent = OAuthActivity.createOAuthActivityIntent(getApplicationContext(), "vfoj4o6nxqblahh454wem", "J9TQWyFSblahV2C", false, "http://localhost");
                intent.putExtra("boximageUri", imageUri);
                System.out.println("BoxUri: "+imageUri);
                startActivityForResult(intent, BOX_RESULT);
                super.onLoadingComplete(imageUri, view, loadedImage);
            }
        });
        break;

ビットマップまたはURIのいずれかを渡そうとしています

および OnActivityResult で

    case BOX_RESULT:
             if (resultCode == Activity.RESULT_CANCELED) {
                // Get the error message for why authentication failed.
                String failMessage = data.getStringExtra(OAuthActivity.ERROR_MESSAGE);
                // Implement your own logic to handle the error.
              // handleFail(failMessage);
            } else {
                // You will get an authenticated oath token object back upon success.
                BoxAndroidOAuthData oauth = data.getParcelableExtra(OAuthActivity.BOX_CLIENT_OAUTH);
                        // If you don't want to supply a customized hub or parser, use null to fall back to defaults.
                        BoxAndroidClient client = new BoxAndroidClient( "vfoj4oxxxxxxxxxxtordlh454wem", 
                                "J9TjxxxxxxxmRwux2V2C", null, null, null);
                        client.authenticate(oauth);
                       System.out.println("Data for Box: "+data.getExtras().getString("boximageUri"));
                       BoxFileUploadRequestObject requestObj = BoxFileUploadRequestObject.uploadFileRequestObject(0, "name", file);
                            BoxFile bFile = client.getFilesManager().uploadFile(requestObj);


            }

            break;

ここでは、認証に成功しましたが、渡した Intent データの uri またはビットマップを受け取りません。

さらに、Box api v2 のファイル アップロード用にビットマップをファイルに渡す方法を誰かが知っている場合は、助けていただければ幸いです。

ありがとう、アルナブ

4

1 に答える 1

0

責任転嫁してみるか……。

Oauth アクティビティに移動すると、認証のみを行い、Box API での後続のアクションのアクセス許可を付与する資格情報またはトークンを返します。

ビットマップを POST するための正しい API を選択してください... ここでは、bitMap に対応する ByteArray を HTTP POST アクションの本文に ByteArrayEntity としてロードできるようにする API 呼び出しが必要です。

Post の本体に byteArray としてラップされるようにローカル ビットマップ インスタンスを準備する方法のこの回答サンプル。

于 2014-07-10T14:20:20.363 に答える