在启动Android默认Web浏览器后处理后退单击

Spo*_*ace 1 browser android uri android-intent android-activity

在我的Android应用程序中,我希望启动默认Web浏览器以将用户发送到验证网页,然后在验证后使用回调将其发送回我的应用程序.

我有这个功能正常工作,但我遇到的困难是拦截用户决定他们不想在网络浏览器中验证自己并点击后退按钮返回我的应用程序的情况.

我尝试使用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");
    }
}
Run Code Online (Sandbox Code Playgroud)

运行此代码后输出:

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
Run Code Online (Sandbox Code Playgroud)

然后,如果用户从Web浏览器单击回来,它只是第三次调用onResume().

因此,如果用户从浏览器中点击回来时,是否有人会对我如何识别?

Giv*_*ivi 5

尝试一下这个怎么样:

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
}
Run Code Online (Sandbox Code Playgroud)