Articles of google api client

什么是新生成的代码“这是自动生成的,用于实现App Indexing API。”?

背景 我今天刚刚创建了一个新的POC(关于活动转换,但这不是主题),我注意到在主要活动的“onCreate”方法中写了一个新行: // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 和更多: @Override public void onStart() { super.onStart(); // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. mClient.connect(); Action viewAction = Action.newAction( Action.TYPE_VIEW, // TODO: […]

Google Api客户端有时在onConnected中为NULL

我实现了GoogleApiClient : mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this, 0 /* clientId */, this) .addApi(LocationServices.API) .addApi(Places.GEO_DATA_API) .addConnectionCallbacks(this) .build(); 但在onConnected方法中,我检查mGoogleApiClient => value null。 在这种情况下,我尝试重新构建googleApiClient但我收到错误: java.lang.IllegalStateException: Already managing a GoogleApiClient with id 0 请帮助我理解为什么mGoogleApiClient有时候是NULL,因为它已连接:|。 (注意。我检查了所有源代码,我从未将GoogleApiClient设置为NULL)。 谢谢! 更新 我尝试使用最新版本的播放服务后,我的问题现在解决了。 谢谢大家的帮助。

Google使用g-plus最新API登录并注销

我已经完成了一些与google plus登录和注销相关的stackoverflow问题。 其中大部分已经过时了。 我无法实现我真正想要的东西。 退出后,下次登录时,我希望用户选择可用的Google帐户再次登录。 我正在使用自定义登录和注销按钮。 为了退出,我有两个案例, 如果任何用户已在同一登录活动中登录,请在登录前退出。 从不同的活动中退出。 这是我到目前为止实施的内容: public class LoginActivity extends AppCompatActivity implements OnClickListener{ private static final int RC_SIGN_IN = 9001; private GoogleApiClient mGoogleApiClient; private ConnectionResult mGoogleConnectionResult; private Button login; private ProgressDialog mProgressDialog; private Context mContext; private String mUri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext= LoginActivity.this; requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.login_layout); login= (Button) […]

GoogleApiClient onConnectionSuspended,我应该再次调用mGoogleApiClient.connect()吗?

我在服务中使用GoogleApiClient来请求融合位置更新。 每件事都正常工作,但有时会挂起连接并调用onConnectionSuspended。 @Override public void onCreate() { … mGoogleApiClient = new GoogleApiClient.Builder(this) // this is a Context .addApi(LocationServices.API) .addConnectionCallbacks(this) // this is a [GoogleApiClient.ConnectionCallbacks][1] .addOnConnectionFailedListener(this) // .build(); mGoogleApiClient.connect(); … } @Override public void onConnectionSuspended(int arg0) { // what should i do here ? should i call mGoogleApiClient.connect() again ? ? } 在上面的链接(ConnectionCallback doc)中,它说: 应用程序应禁用需要该服务的UI组件,并等待对onConnected(Bundle)的调用以重新启用它们。 但是这个对onConnected的调用将如何发生呢? […]

在片段中使用enableAutoManage()

还有其他方法可以连接Google API客户端吗? 我使用自动完成的地方,我必须在MYFRAGMENT的某些地方使用此代码 mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this) .addApi(Places.GEO_DATA_API) .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) .addConnectionCallbacks(this).build(); 我的问题 enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) .addConnectionCallbacks(this).build(); 我不能处理它,因为当我用getActivity()替换它时,我有很多问题需要进行转换 感谢您的帮助,对不起,如果这个问题很愚蠢。

javax.net.ssl.SSLHandshakeException:在握手时远程主机关闭连接,同时在bigquery中插入行

嗨,我正在研究Android应用程序,我已经集成了bigquery。 我发现有时我们在向大查询表插入数据时会遇到很多SSLexception。 我不知道如何处理这个问题。 请帮助究竟是什么原因导致这个问题。 这是相同的线程,但在进行流式插入api调用时没有回答Bigquery SSL错误 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946) ~[na:1.7.0_51] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) ~[na:1.7.0_51] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) ~[na:1.7.0_51] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) ~[na:1.7.0_51] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) ~[na:1.7.0_51] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[na:1.7.0_51] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) ~[na:1.7.0_51] at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) ~[na:1.7.0_51] at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77) ~[google-http-client-1.19.0.jar:1.19.0] at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:965) ~[google-http-client-1.19.0.jar:1.19.0] at com.google.api.client.googleapis.batch.BatchRequest.execute(BatchRequest.java:241) ~[google-api-client-1.19.1.jar:1.19.1] at com.livestream.analytics.datastorage.worker.InsertApiActor$$anonfun$2$$anonfun$4.apply(InsertApiActor.scala:131) ~[analytics-data-storage-worker_2.11-1.0.0.jar:1.0.0] at com.livestream.analytics.datastorage.worker.InsertApiActor$$anonfun$2$$anonfun$4.apply(InsertApiActor.scala:118) ~[analytics-data-storage-worker_2.11-1.0.0.jar:1.0.0] at com.livestream.analytics.common.store.bigquery.api.BigQueryApi$.withSyncClient(BigQueryApi.scala:71) ~[analytics-common_2.11-1.0.0.jar:1.0.0] […]

无声的谷歌login在Android的后台服务

我在我的android应用程序中运行后台服务。 我使用从login活动获得的IdToken在后端服务器进行身份validation。 该服务正在以START_STICKY模式运行,因此即使closures该应用程序,该服务也会继续在后台运行,以便从后端服务器获取任何通知。 我面临的问题是当IdToken过期时,我无法在服务本身中更新它。 如果令牌已过期,则callback函数不会收到任何结果。 如果令牌尚未过期,则会立即得到结果。 这里是signIn函数和handleSignIn函数的代码。 private void signIn() { new Thread(new Runnable() { public void run() { GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestIdToken("<My server_client_id>") .build(); GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(context) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn (mGoogleApiClient); if (opr.isDone()) { // If the user's cached credentials are valid, the OptionalPendingResult will […]

Android GoogleAPIClient – NoClassDefFoundError:com / google / android / gms / internal / zzsa

我正在开发一个应用程序,使用GoogleAPIClient(显然)获取用户当前位置在后台。 为了完成这个任务,我使用了带有WakefulBroadcastReceiver的IntentService(每小时获取位置)。 在开发环境中一切正常,但在Play Store中部署时,有些设备出现此错误: Fatal Exception: java.lang.NoClassDefFoundError: com/google/android/gms/internal/zzsa at com.google.android.gms.common.api.GoogleApiClient$Builder.<init>(Unknown Source) at tellerina.com.br.vivara.services.MyService.onHandleIntent(MyService.java:37) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.os.HandlerThread.run(HandlerThread.java:61) 我已经search了互联网的答案,但我没有find任何东西。 以下是出现exception的地方: mGoogleApiClient = new GoogleApiClient.Builder(MyApplication.getContext()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); 非常感谢! 编辑 应用程序build.gradle buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.21.2' } } apply plugin: 'com.android.application' apply plugin: […]

获取'E / TokenRequestor:你有错误的OAuth2相关configuration。 详细的错误:INVALID_AUDIENCE'即使在提供准确的客户端ID之后

我在我的应用程序中提供了GoogleSignIn选项。 这是我的代码: public class SignupActivity extends AppCompatActivity { private static final int RC_SIGN_IN = 1; GoogleApiClient mGoogleApiClient; FirebaseAuth mAuth; TextView appName; ProgressDialog signinProgressDialog; CoordinatorLayout coordinatorLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // setSupportActionBar(toolbar); signinProgressDialog = new ProgressDialog(SignupActivity.this); coordinatorLayout = (CoordinatorLayout) findViewById(R.id.signupCoordinatorLayout); // Configure Google Sign In GoogleSignInOptions […]

检测或防止用户使用假的位置

我会阻止用户使用我的应用程序,如果他们假的位置。 所以我使用isFromMockProvider来检查位置是否是假的(请点击这里 )。 但是,在某些情况下, isFromMockProvider()可能会针对伪造的位置返回false。 public void onLocationChanged(Location location) { textView.append("long:"+location.getLatitude()+" – lat:"+location.getLongitude()+" – isMock :"+location.isFromMockProvider() + "\n"); } 我的情况是 :我使用应用程序假GPS位置伪造一个位置,然后我禁用假的位置,并去我的应用程序。 然后onLocationChanged用isFromMockProvider() = false返回假的位置 录像机 : https : //www.youtube.com/watch?v = rWVvjOCaZiI(在这个video中,我的当前位置是16.06,108.21,假的位置是36.26,138.28。在上一个video中可以看到位置是36.26, 138.28但isFromMockProvider = false) 在这种情况下,有没有办法检测用户是否使用了伪造的位置? 任何帮助或build议将不胜感激。 DEMO项目