Android H5调起Activity实现流程

介绍

在Android开发中,我们经常会遇到需要在H5页面中调起原生的Activity的场景。这篇文章将向你介绍如何实现Android H5调起Activity的步骤,并提供相应的代码示例。

整体流程

下面是实现Android H5调起Activity的整体流程,我们将通过以下步骤完成:

erDiagram
    H5页面 --> JS代码: 调用JavaScriptInterface
    JS代码 --> Android代码: 调用原生方法
    Android代码 --> Activity: 调起目标Activity

步骤说明

第一步:在H5页面中调用JavaScriptInterface

在H5页面中,我们需要通过JavaScript调用Android的原生方法。为了实现这一点,我们需要在H5页面中添加以下代码:

<button onclick="callNativeMethod()">调起Activity</button>

<script>
    function callNativeMethod() {
        // 调用Android原生方法
        window.androidInterface.callNativeMethod();
    }
</script>

第二步:在Android代码中添加JavaScriptInterface

在Android代码中,我们需要添加一个JavaScriptInterface类,用于接收H5页面的调用请求,并调起相应的Activity。以下是代码示例:

public class JavaScriptInterface {
    private Context mContext;

    public JavaScriptInterface(Context context) {
        mContext = context;
    }

    @JavascriptInterface
    public void callNativeMethod() {
        // 调起目标Activity
        Intent intent = new Intent(mContext, TargetActivity.class);
        mContext.startActivity(intent);
    }
}

第三步:在原生Activity中加载H5页面并添加JavaScriptInterface

在原生Activity中,我们需要加载H5页面,并添加之前创建的JavaScriptInterface。以下是代码示例:

public class MainActivity extends AppCompatActivity {
    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化WebView
        mWebView = findViewById(R.id.web_view);
        WebSettings settings = mWebView.getSettings();
        settings.setJavaScriptEnabled(true);

        // 加载H5页面
        mWebView.loadUrl("file:///android_asset/index.html");

        // 添加JavaScriptInterface
        mWebView.addJavascriptInterface(new JavaScriptInterface(this), "androidInterface");
    }
}

第四步:在AndroidManifest.xml中声明目标Activity

在AndroidManifest.xml文件中,我们需要声明目标Activity。以下是代码示例:

<manifest xmlns:android="
    package="com.example.app">

    <application
        ...>
        <activity android:name=".TargetActivity">
            ...
        </activity>
    </application>

</manifest>

类图

下面是Android H5调起Activity的类图,以便更好地理解各个类之间的关系:

classDiagram
    class MainActivity {
        -WebView mWebView
        +onCreate(Bundle savedInstanceState)
    }

    class JavaScriptInterface {
        -Context mContext
        +JavaScriptInterface(Context context)
        +callNativeMethod()
    }

    class TargetActivity {
        ...
    }

    MainActivity --* JavaScriptInterface
    MainActivity --> TargetActivity

总结

通过以上步骤,我们成功地实现了Android H5调起Activity的功能。首先,在H5页面中调用JavaScriptInterface,然后在Android代码中添加JavaScriptInterface并在原生Activity中加载H5页面,并最终在AndroidManifest.xml中声明目标Activity。希望本文对你理解和实现Android H5调起Activity有所帮助。