需要协助使用Google云端硬盘示例演示

时间:2014-03-20 10:36:11

标签: android

对Java,Android Dev和Android Studio完全陌生 - 我有点挣扎。

我想创建一个应用程序,我可以在Google云端硬盘中选择一个文件夹。查看该文件夹中的照片并选择我想要的照片(多选)。

然后,我想要获取这些照片的云端元数据 - 例如照片的链接,并能够循环浏览每张照片并执行其他活动(例如,在电子邮件中发送这些照片)。

以下是示例演示:

https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/PickFolderWithOpenerActivity.java

我使用PickFolderWithOpenerActivity作为第一个活动,它允许我选择一个文件夹(文件夹内容虽然是灰色的)。

当我选择一个文件夹时,它会填充文件夹driveId(来自样本):

 showMessage("Selected folder's ID: " + driveId);

接下来 - 我假设我需要调用另一个Activity,例如ListFilesInFolderActivity.java。

我认为需要使用intent调用此活动。

问题:

  1. 如何将driveId传递给ListFilesInFolderActivity?
  2. 假设上述工作,我如何使文件(多个)可选?
  3. 在BaseActivity.java中 - 有一个静态字符串:

    public static final String EXISTING_FOLDER_ID = "0B2EEtIjPUdX6MERsWlYxN3J6RU0";
    

    所以在PickFolderActvity中,我尝试使用以下内容覆盖它:

               showMessage("Selected folder's ID: " + driveId);
               EXISTING_FOLDER_ID = driveId.toString();
    
               Intent intent = new Intent(this, ListFilesActivity.class);
                startActivity(intent);
    

    但应用程序崩溃了。 请注意,我似乎无法使用模拟器,这与Google Play服务有关。我不得不生成一个apk并转移到我的设备。

    感谢您的帮助,感谢初学者的耐心等待。

    这是来自PickFolderWithOpenerActivity的代码,[编辑]我修改了代码,现在它可以工作,并调用ListFilesInFolder.java。但这些文件未列在ListView中。我不确定为什么。:

    public class PickFolderWithOpenerActivity extends BaseActivity {
    
        private static final String TAG = "PickFolderWithOpenerActivity";
    
        private static final int REQUEST_CODE_OPENER = 1;
    
        @Override
        public void onConnected(Bundle connectionHint) {
            super.onConnected(connectionHint);
            IntentSender intentSender = Drive.DriveApi
                    .newOpenFileActivityBuilder()
                    .setMimeType(new String[] { DriveFolder.MIME_TYPE })
                    .build(getGoogleApiClient());
            try {
                startIntentSenderForResult(
                        intentSender, REQUEST_CODE_OPENER, null, 0, 0, 0);
            } catch (SendIntentException e) {
                Log.w(TAG, "Unable to send intent", e);
            }
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch(requestCode) {
                case REQUEST_CODE_OPENER:
                    if (resultCode == RESULT_OK) {
                        DriveId driveId = (DriveId) data.getParcelableExtra(
                                OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
                        showMessage("Selected folder's ID: " + driveId);
                        EXISTING_FOLDER_ID = driveId.getResourceId();
    
                   Intent intent = new Intent(this, ListFilesInFolderActivity.class);
                    startActivity(intent);
    
    
                    }
                    finish();
                    break;
                default:
                    super.onActivityResult(requestCode, resultCode, data);
                    break;
            }
        }
    }
    

1 个答案:

答案 0 :(得分:2)

似乎当我将driveID传递给ListFilesInFolder.java时,它是不正确的。

我应该传递resourceID。

以下是PickFolderWithOpenerActivity.java中的更正代码:

EXISTING_FOLDER_ID = driveId.getResourceId();

               Intent intent = new Intent(this, ListFilesInFolderActivity.class);
                startActivity(intent);

这现在有效,代码调用ListFilesInFolderActivity。但它没有列出ListView中的文件。我会为此打开一个单独的问题!