我正在尝试创建Android应用,以便用户可以浏览并从其Google云端硬盘中选择文件。
我是Android新手,我一直在尝试使用这些示例。 当我在手机上运行APK时,身份验证似乎正常,但我不知道如何检索和显示云端硬盘文件夹。
ListView
?)中显示什么,以便用户可以导航到这些文件?我的onConnected代码工作正常,但我认为问题是没有正确填充DriveId。
@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "API client connected.");
super.onCreate(connectionHint);
setContentView(R.layout.activity_listfiles);
mResultsListView = (ListView) findViewById(R.id.listViewResults);
mResultsAdapter = new ResultsAdapter(this);
mResultsListView.setAdapter(mResultsAdapter);
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FOLDER_ID)
.setResultCallback(idCallback);
}
我有一个名为“activity_listfiles.xml”的布局。在那个布局上它只是一个名为:@ id / listViewResults
的ListView代码进入此方法,因为我收到DriveID错误消息:找不到DriveId。您是否有权查看此文件?
final private ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() {
@Override
public void onResult(DriveIdResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Cannot find DriveId. Are you authorized to view this file?");
return;
}
DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), result.getDriveId());
folder.listChildren(getGoogleApiClient())
.setResultCallback(metadataResult);
}
};
有人能指出我正确的方向吗?我使用以下作为指南: https://github.com/googledrive/android-demos/tree/master/src/com/google/android/gms/drive/sample/demo
这是ResultsAdapter java文件,我不确定它是做什么的,或者我是否需要更改它:
public class ResultsAdapter extends DataBufferAdapter<Metadata> {
public ResultsAdapter(Context context) {
super(context, android.R.layout.simple_list_item_1);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(getContext(),
android.R.layout.simple_list_item_1, null);
}
Metadata metadata = getItem(position);
TextView titleTextView =
(TextView) convertView.findViewById(android.R.id.text1);
titleTextView.setText(metadata.getTitle());
return convertView;
}
}
我应该补充一点,字符串EXISTING_FOLDER_ID在BaseActivity.java中,代码行如下所示:
public static final String EXISTING_FOLDER_ID = "0B2EEtIjPUdX6MERsWlYxN3J6RU0";
我认为我需要以某种方式使用ID来填充它?
我尝试使用:
EXISTING_FOLDER_ID = Drive.DriveApi.getRootFolder(getGoogleApiClient()).getDriveId().toString();
showMessage(EXISTING_FOLDER_ID);
Drive.DriveApi.fetchDriveId(getGoogleApiClient(),EXISTING_FOLDER_ID)
.setResultCallback(idCallback);
showMessage会显示一个ID - 因此它正在获取根文件夹ID,但由于某种原因它仍显示“无法找到DriveID”消息。
所以fetchDriveID失败了吗?
答案 0 :(得分:2)
请在此处查看README的必要性https://github.com/googledrive/android-demos/blob/master/README.md
您需要更改EXISTING_FOLDER_ID以指向您的应用有权访问的云端硬盘文件夹的资源ID。例如,您可以创建一个新文件夹,然后使用该ID。