无法使用教程将文件上载到Google Drive(Android上的Drive应用程序)
我正在尝试让以下教程正常工作:。在完成所有步骤并运行代码后,我出现以下错误:“无法使用教程将文件上载到Google Drive(Android上的Drive应用程序),android,google-drive-realtime-api,Android,Google Drive Realtime Api,我正在尝试让以下教程正常工作:。在完成所有步骤并运行代码后,我出现以下错误:“我尝试了两次执行该项目,以查看是否遗漏了任何步骤,但两次都导致了相同的结果。下面是我的活动、清单文件和源文件 我按照说明通过下载添加了“驱动API”。我在Galaxy SIII上运行,它的目标是Android版本4.1.2。然而,我的项目被设置为使用“谷歌API安卓4.2.2”运行 以下是连接到internet和4G电话服务时出现的错误: 11-18 15:19:51.275: W/AbstractGoogleClie
我尝试了两次执行该项目,以查看是否遗漏了任何步骤,但两次都导致了相同的结果。下面是我的活动、清单文件和源文件 我按照说明通过下载添加了“驱动API”。我在Galaxy SIII上运行,它的目标是Android版本4.1.2。然而,我的项目被设置为使用“谷歌API安卓4.2.2”运行 以下是连接到internet和4G电话服务时出现的错误:
11-18 15:19:51.275: W/AbstractGoogleClient(3450): Application name is not set. Call Builder#setApplicationName.
11-18 15:19:51.946: W/IInputConnectionWrapper(3450): showStatusIcon on inactive InputConnection
11-18 15:20:02.367: E/ActivityThread(3450): Activity com.example.fileupload.MainActivity has leaked ServiceConnection com.google.android.gms.internal.by@41e4e5a8 that was originally bound here
11-18 15:20:02.367: E/ActivityThread(3450): android.app.ServiceConnectionLeaked: Activity com.example.fileupload.MainActivity has leaked ServiceConnection com.google.android.gms.internal.by@41e4e5a8 that was originally bound here
11-18 15:20:02.367: E/ActivityThread(3450): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:965)
11-18 15:20:02.367: E/ActivityThread(3450): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:859)
11-18 15:20:02.367: E/ActivityThread(3450): at android.app.ContextImpl.bindService(ContextImpl.java:1308)
11-18 15:20:02.367: E/ActivityThread(3450): at android.app.ContextImpl.bindService(ContextImpl.java:1300)
11-18 15:20:02.367: E/ActivityThread(3450): at android.content.ContextWrapper.bindService(ContextWrapper.java:401)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:192)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:217)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:836)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequest(MediaHttpUploader.java:456)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequestWithBackOffAndGZip(MediaHttpUploader.java:478)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.media.MediaHttpUploader.executeUploadInitiation(MediaHttpUploader.java:428)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:326)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:420)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345)
11-18 15:20:02.367: E/ActivityThread(3450): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463)
11-18 15:20:02.367: E/ActivityThread(3450): at com.example.fileupload.MainActivity$1.run(MainActivity.java:98)
11-18 15:20:02.367: E/ActivityThread(3450): at java.lang.Thread.run(Thread.java:856)
11-18 15:20:02.377: I/Adreno200-EGLSUB(3450): <ConfigWindowMatch:2087>: Format RGBA_8888.
11-18 15:20:06.021: I/Adreno200-EGLSUB(3450): <ConfigWindowMatch:2087>: Format RGBA_8888.
11-18 15:20:16.782: I/Adreno200-EGLSUB(3450): <ConfigWindowMatch:2087>: Format RGBA_8888.
11-18 15:20:27.764: W/AbstractGoogleClient(3450): Application name is not set. Call Builder#setApplicationName.
11-18 15:20:27.844: W/AbstractGoogleClient(3450): Application name is not set. Call Builder#setApplicationName.
11-18 15:20:28.925: W/IInputConnectionWrapper(3450): showStatusIcon on inactive InputConnection
}
清单文件
{
}
布局文件
{
}在日志中,第一行告诉您如何添加应用程序名称,如您在谷歌控制台为简单api访问密钥注册应用程序时提供的那样。 当由凭据对象提供时,我已按如下方式构造了驱动器对象:
public static Drive getDriveService(GoogleAccountCredential credential)
{
return
new Drive
.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential)
.setApplicationName("YourProjectName")
.build();
}
我希望这能解决你的问题 谢谢你的帮助。我想我还缺少其他的拼图。现在我得到了以下错误:(Lcom/google/android/gms/R$string;中的common\u google\u play\u services\u install\u title);。。。。和W/System.err(16349):“消息”:“访问未配置”…您需要在控制台中激活驱动器SDK和API,并且当您在控制台中创建项目时,您必须从同一台计算机上运行应用程序,因为它是IP锁定的(或者我假设是MAC锁定的)。驱动器SDK和API都变为一个,生成SHA密钥,我想知道我是否在代码中遗漏了什么。我不确定“com.google.api.client.googleapis.json.GoogleJsonResponseException:403禁止”要求我做什么来修复此错误。我是从同一台windows计算机上编译的。您是如何获得SHA1密钥的?您是从keytool生成的还是从Eclipse的->窗口选项卡->首选项->Android->构建中获得的。如果您遵循第二种方法,您将获得正确的SHA1密钥。另外,您是否将OAuth 2.0客户端ID正确地放在Android项目的清单中:您必须正确执行这两个步骤,然后清理您的项目并在Android Phone(API 8+)/Android Emulator(4.2.2或API 17)中运行该项目。我认为这将解决您的401访问未配置问题,这也是我在早期google drive开发阶段多次遇到的问题。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.fileupload"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="16" />
<permission
android:name="com.google.cloud.backend.android.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.cloud.backend.android.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<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" >
<activity
android:name="com.example.fileupload.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="com.google.android.apps.drive.APP_ID" android:value="*****" />
<intent-filter>
<action android:name="com.google.android.apps.drive.DRIVE_OPEN" />
<data android:mimeType="application/vnd.google-apps.drive-sdk.id=*****" />
<data android:mimeType="image/png" />
<data android:mimeType="image/jpeg" />
<data android:mimeType="image/jpg" />
</intent-filter>
</activity>
</application>
</manifest>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
public static Drive getDriveService(GoogleAccountCredential credential)
{
return
new Drive
.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential)
.setApplicationName("YourProjectName")
.build();
}