Google drive api Google Drive SDK:Drive QuickStart应用程序示例不';我不能在安卓上工作
驱动器快速启动应用程序示例在Android()上不起作用 我有一个Note2运行在Android 4.1.2上。我遵循了教程中的所有步骤(使用eclipse+ADT+google控制台),花了30多个小时 以下行中有一个“ClassNotFoundException”: File File=service.files().insert(body,mediaContent.execute() 我发现异常发生在Drive.Files.Insert.execute()部分 有人能让这个摄像头应用程序工作吗?我看了这个应用程序的视频教程,甚至开发者都说这个应用程序“可能会工作” 互联网上是否有已确认的可用硬盘SDK应用程序?我只想从谷歌硬盘下载一个简单的谷歌电子表格 我尝试过的其他事情: -谷歌提供的DrEdit示例应用程序也没有与Google drive正确同步。 -我在谷歌文档列表API网站上也找不到一个可用的示例应用程序 我相信从Android上访问Google Drive应该是一个简单的任务,附带一个例子……否则,人们可能会使用DropBoxGoogle drive api Google Drive SDK:Drive QuickStart应用程序示例不';我不能在安卓上工作,google-drive-api,Google Drive Api,驱动器快速启动应用程序示例在Android()上不起作用 我有一个Note2运行在Android 4.1.2上。我遵循了教程中的所有步骤(使用eclipse+ADT+google控制台),花了30多个小时 以下行中有一个“ClassNotFoundException”: File File=service.files().insert(body,mediaContent.execute() 我发现异常发生在Drive.Files.Insert.execute()部分 有人能让这个摄像头应用程序工
谢谢 不确定这是否会对您有多大帮助,但是是的,我使用Eclipse/Kepler开发了快速启动应用程序。我对Eclipse/Juno有很多问题,也读过一些关于Juno和ADT如何不完全匹配的帖子 我目前正在使用他们的部分代码从手机上传一个文本文件到硬盘。我有一个运行4.2.2的Nexus4。我注意到Quickstart应用程序的最低API级别是4.2,所以这可能就是问题所在。您是否在4.2模拟器上而不是在笔记上试用过它
是的,这是一项简单的任务,但必须完全正确地设置。驱动器有自己处理文件的方式(即,不覆盖同名文件,只创建另一个文件)。当我在查看如何从驱动器打开单个电子表格时,我使用了相同的快速启动应用程序,我使用的是Eclipse Juno、Windows 7和64位。两个视频我都看,第二个是 我使用了两者的步骤,特别是在清单xml中。我必须看两次视频,以确保我有所有的步骤。我必须将用户功能添加到我的清单中
<uses-feature android:name="android.hardware.camera" />
希望这有帮助。他们有4.1.2的例子吗?大多数S3和Note1/2用户仍然在使用4.1.2AFAIK,他们唯一的例子就是4.2。我对4.1和4.2之间的差异还不够了解。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.birdsall.tda"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.camera" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:uiOptions="splitActionBarWhenNarrow"
android:exported="true" >
<meta-data android:name="com.google.android.apps.drive.APP_ID" android:value="id=YOURCLIENTID" />
<intent-filter>
<action android:name="com.google.android.apps.drive.DRIVE_OPEN" />
<data android:mimeType="application/vnd.google-apps.drive-sdk.YOURCLIENTID" />
<data android:mimeType="image/png" />
<data android:mimeType="image/jpeg" />
<data android:mimeType="image/jpg" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value=".ActivitySearch" />
<activity
android:name="com.birdsall.tda.ActivityMain"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ActivityTakePhoto" >
</activity>
<provider
android:name="com.birdsall.tda.TDAProvider"
android:authorities="com.birdsall.tda.contentprovidertda"
android:exported="true"
android:readPermission="true"
android:writePermission="true" />
<activity
android:name=".ActivitySearch"
android:label="Rule Search"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
</application>
</manifest>
package com.birdsall.tda;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.accounts.AccountManager;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.widget.Toast;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
import com.google.api.client.http.FileContent;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
public class ActivityTakePhoto extends Activity {
static final int REQUEST_ACCOUNT_PICKER = 1;
static final int REQUEST_AUTHORIZATION = 2;
static final int CAPTURE_IMAGE = 3;
private static Uri fileUri;
private static Drive service;
private GoogleAccountCredential credential;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
switch (requestCode) {
case REQUEST_ACCOUNT_PICKER:
if (resultCode == RESULT_OK && data != null && data.getExtras() != null) {
String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
credential.setSelectedAccountName(accountName);
service = getDriveService(credential);
startCameraIntent();
}
}
break;
case REQUEST_AUTHORIZATION:
if (resultCode == Activity.RESULT_OK) {
saveFileToDrive();
} else {
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
}
break;
case CAPTURE_IMAGE:
if (resultCode == Activity.RESULT_OK) {
saveFileToDrive();
}
}
}
private void startCameraIntent() {
String mediaStorageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES).getPath();
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
fileUri = Uri.fromFile(new java.io.File(mediaStorageDir + java.io.File.separator + "BCM_IMG_"
+ timeStamp + ".jpg"));
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(cameraIntent, CAPTURE_IMAGE);
}
private void saveFileToDrive() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
// File's binary content
java.io.File fileContent = new java.io.File(fileUri.getPath());
FileContent mediaContent = new FileContent("image/jpeg", fileContent);
// File's metadata.
File body = new File();
body.setTitle(fileContent.getName());
body.setMimeType("image/jpeg");
File file = service.files().insert(body, mediaContent).execute();
if (file != null) {
showToast("Photo uploaded: " + file.getTitle());
startCameraIntent();
}
} catch (UserRecoverableAuthIOException e) {
startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
private Drive getDriveService(GoogleAccountCredential credential) {
return new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential)
.build();
}
public void showToast(final String toast) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_LONG).show();
}
});
}
}