Java 从Google存储访问框架虚拟文件URI获取Google电子表格ID
我用Intent.ACTION\u OPEN\u文档选择Google电子表格,并可以得到它的虚拟文件URI。 但要使用GoogleSheetsAPI,我需要电子表格ID,而虚拟文件URI似乎不包含它。 如何从Intent.ACTION\u OPEN\u文档接收的数据中获取Google电子表格ID 我的简化代码段:Java 从Google存储访问框架虚拟文件URI获取Google电子表格ID,java,android,google-sheets,google-cloud-storage,Java,Android,Google Sheets,Google Cloud Storage,我用Intent.ACTION\u OPEN\u文档选择Google电子表格,并可以得到它的虚拟文件URI。 但要使用GoogleSheetsAPI,我需要电子表格ID,而虚拟文件URI似乎不包含它。 如何从Intent.ACTION\u OPEN\u文档接收的数据中获取Google电子表格ID 我的简化代码段: public class MainActivity extends AppCompatActivity { ... public void onMenuFile(Men
public class MainActivity extends AppCompatActivity {
...
public void onMenuFile(MenuItem item) {
// called when 'File' menu item is selected
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
startActivityForResult(intent, EDIT_REQUEST_CODE);
}
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode != EDIT_REQUEST_CODE || resultCode != Activity.RESULT_OK || data == null) {
return;
}
uri = data.getData();
if (isVirtualFile(uri)) {
// here i would like to get spreadsheetID somehow, and use it:
ValueRange response = service.spreadsheets().values()
.get(spreadsheetID, sheetTitle)
.execute();
List<List<Object>> values = response.getValues();
...and so on...
}
...
}
...
private boolean isVirtualFile(URI uri)) {
here code from
https://developer.android.com/training/data-storage/shared/documents-files#java
}
}
实际的活动类是com.google.android.apps.docs.app.OpenSafUrlActivity
这将是很好的,看看代码,但我找不到来源
更新
看来我在这里找到了解决办法:
电子表格ID需要硬编码。请参阅以下谷歌代码片段:
public class MainActivity extends AppCompatActivity {
...
public void onMenuFile(MenuItem item) {
// called when 'File' menu item is selected
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
startActivityForResult(intent, EDIT_REQUEST_CODE);
}
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode != EDIT_REQUEST_CODE || resultCode != Activity.RESULT_OK || data == null) {
return;
}
uri = data.getData();
if (isVirtualFile(uri)) {
// here i would like to get spreadsheetID somehow, and use it:
ValueRange response = service.spreadsheets().values()
.get(spreadsheetID, sheetTitle)
.execute();
List<List<Object>> values = response.getValues();
...and so on...
}
...
}
...
private boolean isVirtualFile(URI uri)) {
here code from
https://developer.android.com/training/data-storage/shared/documents-files#java
}
}
只能在创建电子表格对象后调用getData()
要了解电子表格id,请转到google drive上所需的表格并查看URL:
这里有更多信息:但我不需要创建新的电子表格。它已经作为“虚拟文件”存在于谷歌硬盘上。我只想用Intent.ACTION\u OPEN\u文档选择它,然后使用Sheets API读取/更新它。“…找出电子表格id到google drive上所需的表格并查看URL…”不,不是这样。我想使用任意的谷歌电子表格(在我的谷歌硬盘上)通过操作\打开\文档意图来选择它。此时我看不到任何电子表格URL或电子表格ID本身。请更新您的问题以包含您当前使用的代码