Android:如何从服务中调用startResolutionForResult?

时间:2014-11-04 21:02:34

标签: android gps google-play-services

我尝试通过编写GPS跟踪服务向我的应用添加GPS跟踪功能。我一直在关注如何通过Google Play服务执行此操作的Android开发人员资料,但我仍然坚持使用onConnectionFailed方法。我试图致电startResolutionForResult让Google Play服务处理错误。但是,这种方法要求将活动作为第一个参数传递,因为我从服务中调用它,我不确定应该做什么。

我认为我认为这一切都是错误的,并且从服务中处理这个问题的方式完全不同。

2 个答案:

答案 0 :(得分:2)

Google Play服务的身份验证过程需要一项活动,因为它可能需要向用户显示UI。由于服务没有UI,因此您需要向活动发送消息以设置连接,然后服务可以继续。有一个很好的答案,可以在这里证明一种方法:Example: Communication between Activity and Service using Messaging

答案 1 :(得分:1)

您可以使用 Status.getResolution()并使用它启动Activity。例如:

在服务中

PendingIntent pI = status.getResolution();
mGoogleApiClient.getContext().startActivity(new Intent(mGoogleApiClient.getContext(), SomeActivity.class)
.putExtra("resolution", pI).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

活动onCreate:

PendingIntent pI = (PendingIntent) (getIntent().getParcelableExtra("resolution"));
startIntentSenderForResult(pI.getIntentSender(),1,null,0,0,0);

还添加 onActivityResult(int requestCode,int resultCode,Intent data)以接收解析结果