我正在尝试克隆 Uber Driver 应用程序。我得到了这一部分,在收到客户的请求通知后,应用程序将提示应用程序选择器,让用户在用户选择接受客户的请求后选择哪个 3rd 方应用程序(例如谷歌地图或 Waze)导航到客户的位置。
public static final int APP_CHOOSER_LOCATION = 101;
acceptBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String uri = "geo:" + locationInfo.getLatitude() + ","
+locationInfo.getLongitude() + "?q=" + locationInfo.getLatitude()
+ "," + locationInfo.getLongitude();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivityForResult(intent, APP_CHOOSER_LOCATION);
isBack = true;
}
});
所以问题是我怎么知道用户已经完成了他/她的导航?我目前的解决方案是放置一个指标isBack
。默认情况下它将是false
. 当用户点击接受时,isBack
设置为true
。因此,在 onResume 函数中,如果isBack
等于true
,它将继续打开另一个活动。
@Override
public void onResume(){
super.onResume();
if(isBack){
// Proceed to open another actvity
isBack = false;
}
}
但是,如果用户单击取消按钮,这将不起作用。
应用选择器屏幕截图
我尝试使用onActivityResult
,但无论我点击什么应用程序,resultCode
总是显示 0 (或)。RESULT_CANCELED
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i(TAG, "in onActivityResult ");
Log.i(TAG, "resultCode:: "+resultCode);
if (requestCode == APP_CHOOSER_RESPONSE){
if(resultCode == RESULT_OK){
Log.i(TAG, "user select app ");
if(isBack){
// Proceed to open another activity
isBack = false;
}
}
if(resultCode == RESULT_CANCELED){
Log.i(TAG, "is cancelled by user ");
isBack = false;
}
}
}
我的方法错了吗?还是我错过了代码中的任何内容?我被困在这里,我不知道如何继续。任何建议表示赞赏。