从我的 Android 应用程序中,我希望启动默认网络浏览器以将用户发送到验证网页,然后在验证后使用回调将它们发送回我的应用程序。
我的功能工作正常,但我遇到的困难是拦截用户决定他们不想在网络浏览器中验证自己并单击后退按钮返回我的应用程序的情况。
我尝试使用 startActivityForResult() 启动 Web 浏览器,这样我就可以使用 onActivityResult() 拦截返回点击,但由于某种原因,在启动 Web 浏览器后会立即调用 onActivityResult(),而在用户单击返回时根本不会调用。
这是一些演示问题的基本测试代码:
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("MainActivity","onCreate called");
Uri uri = Uri.parse("http://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivityForResult(intent,101);
Log.i("MainActivity","startActivityForResult called");
}
@Override
public void onResume()
{
super.onResume();
Log.i("MainActivity","onResume called");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.i("MainActivity","onActivityResult called");
}
}
运行此代码后的输出:
I/MainActivity(545): onCreate called
I/MainActivity(545): startActivityForResult called
I/MainActivity(545): onResume called
I/MainActivity(545): onActivityResult called
I/MainActivity(545): onResume called
然后,如果用户从 Web 浏览器单击返回,它只是第三次调用 onResume()。
因此,鉴于此,有人对我如何识别用户何时从浏览器返回有任何建议吗?