Я получаю сообщение об ошибке ниже, когда я пытаюсь настроить листы на android studio
2020-01-30 01:38:42.294 6556-6556/com.example.climate I/System.out: [Insert link here to click that allows permission for sheets]
2020-01-30 01:38:42.362 6556-6556/com.example.climate D/AndroidRuntime: Shutting down VM
2020-01-30 01:38:42.363 6556-6556/com.example.climate E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.climate, PID: 6556
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Desktop;
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.browse(AuthorizationCodeInstalledApp.java:174)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp$DefaultBrowser.browse(AuthorizationCodeInstalledApp.java:69)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.onAuthorization(AuthorizationCodeInstalledApp.java:158)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:124)
at com.example.climate.MapsActivity.getCredentials(MapsActivity.java:138)
at com.example.climate.MapsActivity.changeInfo(MapsActivity.java:278)
at com.example.climate.MapsActivity$2.onMapClick(MapsActivity.java:454)
at com.google.android.gms.maps.zzy.onMapClick(Unknown Source:2)
at com.google.android.gms.maps.internal.zzak.dispatchTransaction(Unknown Source:5)
at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source:12)
at android.os.Binder.transact(Binder.java:667)
at cj.b(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):14)
at com.google.android.gms.maps.internal.au.a(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):4)
at com.google.maps.api.android.lib6.gmm6.vector.ai.b(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):91)
at com.google.maps.api.android.lib6.gmm6.vector.dc.onSingleTapConfirmed(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):90)
at com.google.maps.api.android.lib6.impl.gesture.b.onSingleTapConfirmed(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):18)
at com.google.maps.api.android.lib6.impl.gesture.c.handleMessage(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):6)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.Desktop" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.example.climate-_fmw7ixKtigdos-FaoZlxA==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.climate-_fmw7ixKtigdos-FaoZlxA==/lib/x86, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.browse(AuthorizationCodeInstalledApp.java:174)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp$DefaultBrowser.browse(AuthorizationCodeInstalledApp.java:69)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.onAuthorization(AuthorizationCodeInstalledApp.java:158)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:124)
at com.example.climate.MapsActivity.getCredentials(MapsActivity.java:138)
at com.example.climate.MapsActivity.changeInfo(MapsActivity.java:278)
at com.example.climate.MapsActivity$2.onMapClick(MapsActivity.java:454)
at com.google.android.gms.maps.zzy.onMapClick(Unknown Source:2)
at com.google.android.gms.maps.internal.zzak.dispatchTransaction(Unknown Source:5)
at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source:12)
at android.os.Binder.transact(Binder.java:667)
at cj.b(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):14)
at com.google.android.gms.maps.internal.au.a(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):4)
at com.google.maps.api.android.lib6.gmm6.vector.ai.b(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):91)
at com.google.maps.api.android.lib6.gmm6.vector.dc.onSingleTapConfirmed(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):90)
at com.google.maps.api.android.lib6.impl.gesture.b.onSingleTapConfirmed(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):18)
at com.google.maps.api.android.lib6.impl.gesture.c.handleMessage(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):6)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2020-01-30 01:38:42.375 6556-6556/com.example.climate I/Process: Sending signal. PID: 6556 SIG: 9
Код, который использовался для вызова этого, показан ниже, что я делаю неправильно?
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT, InputStream in) throws IOException {
// Load client secrets.
if (in == null) {
throw new FileNotFoundException("Resource not found");
}
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
File tokenFolder = new File(Environment.getExternalStorageDirectory() +
File.separator + TOKENS_DIRECTORY_PATH);
if (!tokenFolder.exists()) {
tokenFolder.mkdirs();
}
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(tokenFolder))
.setAccessType("offline")
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8080).build();
return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
}
With the code calling credentials here
try {
// Build a new authorized API client service.
final NetHttpTransport HTTP_TRANSPORT = new com.google.api.client.http.javanet.NetHttpTransport();
android.util.Log.i("made two", "test");
final String spreadsheetId = "random spreadsheet ID here";
final String range = "Class Data!A2:E";
InputStream in = this.getAssets().open("credentials.json");
android.util.Log.i("input stream", in.toString());
Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT,in))
.setApplicationName(APPLICATION_NAME)
.build();
ValueRange response = service.spreadsheets().values()
.get(spreadsheetId, range)
.execute();
List<List<Object>> values = response.getValues();
if (values == null || values.isEmpty()) {
System.out.println("No data found.");
} else {
System.out.println("Name, Major");
for (List row : values) {
// Print columns A and E, which correspond to indices 0 and 4.
System.out.printf("%s, %s\n", row.get(0), row.get(4));
}
}
} catch (IOException e) {
android.util.Log.i("test",e.toString());
}