Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我无法使用google drive下载文件内容_Java_Android_Google Drive Api_Google Drive Android Api - Fatal编程技术网

Java 我无法使用google drive下载文件内容

Java 我无法使用google drive下载文件内容,java,android,google-drive-api,google-drive-android-api,Java,Android,Google Drive Api,Google Drive Android Api,我正试图用google drive下载google文档文件,但我一直收到状态消息:状态{statusCode=此文件没有可用内容,分辨率=null}。对于我尝试下载的任何文件,此问题都会持续存在。我下载的文件不是空的,里面有文本。这是处理GoogleDrive的类 package com.parse.starter; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRead

我正试图用google drive下载google文档文件,但我一直收到状态消息:状态{statusCode=此文件没有可用内容,分辨率=null}。对于我尝试下载的任何文件,此问题都会持续存在。我下载的文件不是空的,里面有文本。这是处理GoogleDrive的类

package com.parse.starter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import android.content.Intent;
import android.content.IntentSender;
import android.content.IntentSender.SendIntentException;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.drive.Drive;
import com.google.android.gms.drive.DriveApi.DriveContentsResult;
import com.google.android.gms.drive.DriveContents;
import com.google.android.gms.drive.DriveFile;
import com.google.android.gms.drive.DriveFile.DownloadProgressListener;
import com.google.android.gms.drive.DriveId;
import com.google.android.gms.drive.OpenFileActivityBuilder;

public class WriteScreen extends ActionBarActivity implements
        ConnectionCallbacks, OnConnectionFailedListener {

    GoogleApiClient mGoogleApiClient;
    private DriveId mSelectedFileDriveId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_write_screen);

        mGoogleApiClient = new GoogleApiClient.Builder(this).addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE).addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this).build();
    }

    @Override
    protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }

    private ResultCallback<DriveContentsResult> contentsOpenedCallback = new ResultCallback<DriveContentsResult>() {
        @Override
        public void onResult(DriveContentsResult result) {
            if (!result.getStatus().isSuccess()) {
                // display an error saying file can't be opened
                System.out.println("error : " + result.getStatus());
                return;
            }
            // DriveContents object contains pointers
            // to the actual byte stream
            DriveContents contents = result.getDriveContents();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    contents.getInputStream()));
            StringBuilder builder = new StringBuilder();
            String line;
            try {
                while ((line = reader.readLine()) != null) {
                    builder.append(line);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String contentsAsString = builder.toString();
        }
    };

    @Override
    protected void onActivityResult(final int requestCode,
            final int resultCode, final Intent data) {
        switch (requestCode) {
        case 5:
            if (resultCode == RESULT_OK) {
                mGoogleApiClient.connect();
            }
            break;
        case 6:
            if (resultCode == RESULT_OK) {
                mSelectedFileDriveId = (DriveId) data
                        .getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);

                DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,
                        mSelectedFileDriveId);
                file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY,
                        new DownloadProgressListener() {
                            @Override
                            public void onProgress(long bytesDownloaded,
                                    long bytesExpected) {
                                // Update progress dialog with the latest
                                // progress.
                                int progress = (int) (bytesDownloaded * 100 / bytesExpected);
                                Log.d("Tag", String.format(
                                        "Loading progress: %d percent",
                                        progress));
                            }
                        }).setResultCallback(contentsOpenedCallback);
            }
        default:
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    @Override
    public void onConnected(Bundle result) {
        System.out.println("Connection passed");
    }

    @Override
    public void onConnectionSuspended(int arg0) {

    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        System.out.println("Connection failed: " + result);
        if (result.hasResolution()) {
            try {
                result.startResolutionForResult(this, 5);
            } catch (IntentSender.SendIntentException e) {
                // Unable to resolve, message user appropriately
            }
        } else {
            GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,
                    0).show();
        }
    }

    public void open(View view) {
        fileOpen();
    }

    public void publish(View view) {
        IntentSender intentSender = Drive.DriveApi
                .newOpenFileActivityBuilder()
                .setMimeType(
                        new String[] { "application/vnd.google-apps.document",
                                "text/plain" }).build(mGoogleApiClient);

        try {
            startIntentSenderForResult(intentSender, 6, null, 0, 0, 0);
        } catch (SendIntentException e) {
            System.out.println("publish failed: " + e);
        }
    }

    private void fileOpen() {
        Intent intent = getPackageManager().getLaunchIntentForPackage(
                "com.google.android.apps.docs.editors.docs");
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        try {
            startActivity(intent);
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.write_screen, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        return super.onOptionsItemSelected(item);
    }

}
package com.parse.starter;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入android.content.Intent;
导入android.content.IntentSender;
导入android.content.IntentSender.SendIntentException;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入com.google.android.gms.common.ConnectionResult;
导入com.google.android.gms.common.GooglePlayServicesUtil;
导入com.google.android.gms.common.api.GoogleAppClient;
导入com.google.android.gms.common.api.GoogleAppClient.ConnectionCallbacks;
导入com.google.android.gms.common.api.GoogleAppClient.OnConnectionFailedListener;
导入com.google.android.gms.common.api.ResultCallback;
导入com.google.android.gms.drive.drive;
导入com.google.android.gms.drive.DriveApi.DriveContentsResult;
导入com.google.android.gms.drive.DriveContents;
导入com.google.android.gms.drive.DriveFile;
导入com.google.android.gms.drive.DriveFile.DownloadProgressListener;
导入com.google.android.gms.drive.DriveId;
导入com.google.android.gms.drive.OpenFileActivityBuilder;
公共类WriteScreen扩展了ActionBarActivity实现
ConnectionCallbacks,OnConnectionFailedListener{
GoogleapClient MGoogleapClient;
私有驱动器ID mSelectedFileDriveId;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u write\u屏幕);
mGoogleApiClient=new-GoogleApiClient.Builder(this.addApi)(Drive.API)
.addScope(Drive.SCOPE\u文件).addConnectionCallbacks(此)
.addOnConnectionFailedListener(this.build();
}
@凌驾
受保护的void onStart(){
super.onStart();
mGoogleApiClient.connect();
}
私有ResultCallback contentsOpenedCallback=新ResultCallback(){
@凌驾
public void onResult(DriveContentsResult结果){
如果(!result.getStatus().issucess()){
//显示一个错误,说明无法打开文件
System.out.println(“错误:+result.getStatus());
回来
}
//DriveContents对象包含指针
//到实际的字节流
DriveContents=result.getDriveContents();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(
contents.getInputStream());
StringBuilder=新的StringBuilder();
弦线;
试一试{
而((line=reader.readLine())!=null){
builder.append(行);
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
字符串contentsAsString=builder.toString();
}
};
@凌驾
受保护的无效onActivityResult(最终整数请求代码,
最终int结果代码,最终意图数据){
开关(请求代码){
案例5:
if(resultCode==RESULT\u OK){
mGoogleApiClient.connect();
}
打破
案例6:
if(resultCode==RESULT\u OK){
mSelectedFileDriveId=(DriveId)数据
.getParcelableExtra(OpenFileActivityBuilder.EXTRA\u响应\u驱动器\u ID);
DriveFile file=Drive.DriveApi.getFile(mGoogleApiClient,
mSelectedFileDriveId);
file.open(mGoogleApiClient、DriveFile.MODE\u只读、,
新下载ProgressListener(){
@凌驾
公共void onProgress(长字节),
长时间(预计){
//使用最新版本更新进度对话框
//进步。
int进度=(int)(字节下载*100/字节预期);
Log.d(“标记”,String.format(
“加载进度:%d%,
进展),;
}
}).setResultCallback(contentsPenedCallback);
}
违约:
super.onActivityResult(请求代码、结果代码、数据);
}
}
@凌驾
未连接的公共空间(捆绑结果){
System.out.println(“连接已通过”);
}
@凌驾
连接上的公共无效已暂停(int arg0){
}
@凌驾
连接失败的公共void(连接结果){
System.out.println(“连接失败:+结果”);
if(result.hasResolution()){
试一试{
result.StartResult的解决方案(这个,5);
}catch(IntentSender.sendtintentexe){
//无法解析消息,请与用户联系
}
}否则{
GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(),此,
0)show();
}
}
公共作废打开(视图){
fileOpen();
}
公共作废发布(视图){
IntentSender IntentSender=Drive.DriveApi
.newOpenFileActivityBuilder()
.setMimeType(
新字符串[]{“application/vnd.google apps.document”,