0

I'm porting the following GCP IoT core function to Android Studio Gradle project.

createDeviceWithRs256

https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/iot/api-client/manager/src/main/java/com/example/cloud/iot/examples/DeviceRegistryExample.java

And when I just call this function, the application will crash.

    GoogleCredential credential =
            GoogleCredential.getApplicationDefault().createScoped(CloudIotScopes.all());

Is there I have no GCP credentials inside the App?

--

This is my setting for the gradle file

// My Platform is Android 7.0
defaultConfig {
    applicationId "com.example.myapplication"
    minSdkVersion 24
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
}

dependencies {
    ...
    implementation 'com.google.api-client:google-api-client:1.30.8'
    implementation 'com.google.apis:google-api-services-cloudiot:v1-rev94-1.25.0'
    ...
}

And the error log is:

--------- beginning of crash
2020-02-20 15:13:52.964 15387-15387/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 15387
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
        at android.view.View.performClick(View.java:6205)
        at android.widget.TextView.performClick(TextView.java:11103)
        at android.view.View$PerformClick.run(View.java:23653)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
        at android.view.View.performClick(View.java:6205) 
        at android.widget.TextView.performClick(TextView.java:11103) 
        at android.view.View$PerformClick.run(View.java:23653) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6682) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:113)
        at com.android.okhttp.Connection.connectSocket(Connection.java:1455)
        at com.android.okhttp.Connection.connect(Connection.java:1413)
        at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1707)
        at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:133)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:466)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:371)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:503)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:130)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:148)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
        at com.google.api.client.googleapis.auth.oauth2.OAuth2Utils.runningOnComputeEngine(OAuth2Utils.java:87)
        at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.detectEnvironment(DefaultCredentialProvider.java:183)
        at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredentialUnsynchronized(DefaultCredentialProvider.java:110)
        at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredential(DefaultCredentialProvider.java:91)
        at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:217)
        at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:195)
        at com.example.myapplication.MainActivity.createDeviceWithRs256(MainActivity.java:980)
        at com.example.myapplication.MainActivity.register_button_on_click(MainActivity.java:1034)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
        at android.view.View.performClick(View.java:6205) 
        at android.widget.TextView.performClick(TextView.java:11103) 
        at android.view.View$PerformClick.run(View.java:23653) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6682) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

1 Answers1

0

Caused by: android.os.NetworkOnMainThreadException

This indicates a network call.

You are trying to create this on main thread. Try moving to another thread by using an AsyncTask because network operations are not allowed on main thread.

Furkan Yurdakul
  • 2,801
  • 1
  • 15
  • 37