uni-app 跳转Android原生界面(Activity)

最近又接触一个混合开发框架 uni-app,之前有用过APICloud ,cordova,flutter等混合开发,并做提供相应的插件开发,所以 uni-app也避免不了 插件开发和混合交互;这里就说一下开启原生Activity的方法


一、Js开启原生Activity


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
<input type="button" value="js start native Activity" onclick="jsCallNativeActivity()"/>
</body>
<script type="text/javascript">
  function jsCallNativeActivity(){
  //获取宿主上下文
  var main = plus.android.runtimeMainActivity();
   //通过反射获取Android的Intent对象
  var Intent = plus.android.importClass("android.content.Intent");
  //通过宿主上下文创建 intent
  var intent = new Intent(main.getIntent());
  //设置要开启的Activity包类路径  com.HBuilder.integrate.MainActivity换掉你自己的界面
  intent.setClassName(main, "com.HBuilder.integrate.MainActivity");
  //开启新的任务栈 (跨进程)
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  //开启新的界面
  main.startActivity(intent);
  }


</script>
</html>

二、uni-app Plugin开启原生Activity

 private void goNewActivity() {
        Intent intent = new Intent();
        Log.d("PluginTestFunction", "PluginTestFunction: " + intent);
        //com.HBuilder.integrate换成你的包名,com.HBuilder.integrate.MainActivity换成你要开启的Activity的全路径
        intent.setClassName("com.HBuilder.integrate", "com.HBuilder.integrate.MainActivity");
        Context mContext = getDPluginContext();
//        Activity mDPluginActivity = getDPluginActivity(); 这个值为null
        Log.d("PluginTestFunction", "mDPluginActivity: " + mContext);
        /**
        * public Context getDPluginContext() {
        return this.mDPluginContext == null ? this.mApplicationContext : this.mDPluginContext;
        }
        用于这里返回的是mApplicationContext ,所以要开启新的任务栈Intent.FLAG_ACTIVITY_NEW_TASK
        */
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(intent);
    }

为啥要写个小笔记呢,完全是为了服务那些非原生开发者,要是Android开发者,这些都是基础

你可能感兴趣的:(uni-app)