源生代码和H5的交互

本文介绍了Android应用如何通过WebView加载网页,并实现与HTML5页面之间的双向通信,包括HTML5调用Android方法及反之。

  转载地址:http://blog.csdn.net/cnsxhza985/article/details/34856959

android:

1: 默认的事情:

android 通过内置的UI控件WebView来加载网页。
         网页是用一个网络地址来表示的:
         其整个使用方法很简单如下:(android不关心实际的html5代码)

String mUrl ="http://www.baidu.com";    //代表了某个网页的网址
       WebView mWebView = newWebView();    //用来家在网址的UI控件
       mWebView.loadUrl(mUrl);                         //加载指定网址

 

2:Html5 调用 android 本地方法

2.1 Html5 调用 android 本地方法一

a: android 本地将被Html5调用的方法都定义在一个Object中。【假定这个Object 叫 JavaScriptInterface1 】(暴露给html5的方法)

b:WebView通过addJavascriptInterface(new JavaScriptInterface1(), "robot"); 
将定义了回调方法的对象注入WebView中,这样html5就能通过注入的这个对象调用本地方法。【注入的对象的引用叫 “robot”】

c: 在html5中,如下书写 ,就能调用android本地的方法

<p>
<button onclick="robot. callAndroidMethod()">点击我调用android 方法</button>
</p>

<p>
<button onclick="interface.callFromJSBasicDataType(100,100,'a',true)">callnative method to test basic datatype through javascriptInterface</button>
</p>

d: 要是需要带参数交互那么android 本地代码和 JS中定义的方法可以如下书写:

//------android 代码示例------
     public voidcallFromJSBasicDataType(int x,float y,char c,boolean result){
            String str ="-"+(x+1)+"-"+(y+1)+"-"+c+"-"+result;
        }

public void callAndroidMethod(){
            AppUtils.showDialog();
        }

//------JS配合上面的android示例如下------
<p>
<buttononclick="robot.callFromJSBasicDataType(100,100,'a',true)">点击我调用android 方法</button>
</p>

 

2.2 Html5 调用 android 本地方法二

在网页跳转的时候【必须有跳转】,截获跳转地址Url,分析Url从而得知意图。

android 本地通过自定义WebView中使用到的WebClent对象,从而截获跳转地址:

private class CustomWebViewClient extendsWebViewClient {
//重写webclient,从而截获跳转的地址
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//注意,下面的判断就是意图分析
if (url.contains("www.mystore.com.cn")) {
String msg = url;
AppUtils.showAlertDialog(Html5CallNativeFromSelfWebClient.this,msg);
return true;
}
return false;
}
}

 

 

3  android 本地方法调用html5

android主要是通过WebView的webView.loadUrl("javascript:xxmethod();"); 来调用嵌入html5中的 方法。 例子如下:

a:html5 中 定义一个方法,名叫 "noParamFunction()"

<html>
<head>
<script>
function noParamFunction() {
var component = document.getElementById("noparam_ta");
component.value = component.value + "native button clicked,call js with noparams\n";
}
</script>
</head>
</html>

b: 在android本地:想调用javascript中的noParamFunction方法,如下即可

webView.loadUrl("javascript:noParamFunction();");

 

 

4: 再往下就是URL中附加的私有协议了

 

后端给前端发送数据的约定

1:后端给前端发送的数据整个就是一个网页地址 + #myrainbowparams#+ json +#myrainbowparams# 的组合结构。 
(比如:
http://mystore.com.cn/v1/page/goods_info?#myrainbowprams#{"clientaction":"1","actionid": "100","params": {"bugoodsid": "1000"}}#myrainbowprams#

2:注意:
只有满足下面2个条件前端才会acitonid 去执行动作
a
h5给的数据中包含#myrainbowprams#
b: clientaction = 1

3:参数说明

参数  

必选  

类型及范围  

说明  

备注  

clientaction

TRUE

string

是否需要app自己处理H5给的数据" 0->不需要处理" ; "1-->需要处理"

actionid

true

string

clientaction0 actionid 填为-1clientaction1 actionid填为正常的编号

params

TRUE

jsonobject

clientaction0 params 填为null ; clientaction1 params 正常填写

登录:可选

h5给前段的整个数据示例如下

http://mystore.com.cn/v1/page/goods_info?#myrainbowprams#{
"clientaction": "1",
"actionid": "100",
"params": {
"bugoodsid": "1000" 

}
}
#myrainbowprams#

对上面的这些信息前段接收到之后理解如下:
1
:前端需要自己处理,而不是简单的利用webkit引擎去进行页面跳转
2
:前端需要执行编号为100的动作
3
执行编号为100的动作所需要的参数在params中,有 bugoodsid , url 等。。请按照需求取。

<think>好的,我现在需要帮助用户找到使用原PHP编写的商城后台代码。首先,我需要回顾用户提供的引用内容,看看有没有相关的资或建议。 引用[1][2]都提到PHP商城系统的优势,比如灵活、开发快、适应性强等,但并没有直接给出代码的链接。引用[3]提到了一个Bilibili视频,可能包含PHP毕设项目的管理系统,可能涉及代码。引用[4]提到了基于PHP的手机商城设计与实现,附码191803,这可能是一个具体的项目,但用户需要原PHP的后台代码。引用[5]展示了一个微商城的代码片段,但可能不够完整。 用户明确需要原PHP的后台系统代码,所以需要推荐具体的资。首先,我应该考虑开项目或教育机构提供的毕设码。例如,引用[3]中的视频可能包含可下载的码,用户需要访问B站链接查看。另外,引用[4]提到的码191803可能是一个具体的项目,但需要确认是否原PHP编写。此外,CRMEB在引用[1]中被推荐为PHP商城系统,可能需要查看他们的开项目。 需要注意的是,用户可能需要指导如何获取这些码,比如GitHub、码云等平台,或者教育机构提供的资。同时,要提醒用户注意代码的授权许可,确保合法使用。另外,原PHP通常指不使用框架,所以需要确认推荐的码是否符合这一条件。 总结步骤:1. 推荐开项目如CRMEB;2. 提及引用中的毕设项目码;3. 提供获取途径如GitHub;4. 提醒注意事项如授权安全性。确保回答结构清晰,分点说明,并引用相关引用内容支持建议。</think>以下是关于原PHP编写的商城后台系统代码的获取与实现建议: --- ### 一、推荐原PHP商城后台开项目 1. **CRMEB开商城系统** - 基于原PHP+MySQL开发,支持完整的后台管理模块(商品、订单、会员、促销等),提供免费开版本[^1]。 - 特点:代码结构清晰,模块化设计,适合二次开发。 - 码地址:可通过其官网或GitHub搜索`CRMEB`获取。 2. **IT实战课堂的PHP古着商城管理系统** - 引用[3]中的B站视频提供了原PHP实现的商城后台码,包含用户管理、订单处理等核心功能。 - 获取方式:访问[B站视频页面](https://www.bilibili.com/video/BV1VB4y1q7bs)并联系UP主获取资。 --- ### 二、原PHP商城后台核心功能实现 若希望手动开发,以下是关键模块的代码示例: #### 1. 数据库连接(`config.php`) ```php <?php $host = 'localhost'; $user = 'root'; $password = ''; $dbname = 'shop'; $conn = new mysqli($host, $user, $password, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } ?> ``` #### 2. 管理员登录验证(`admin_login.php`) ```php <?php session_start(); include 'config.php'; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $username = $_POST['username']; $password = md5($_POST['password']); // 简单加密 $sql = "SELECT * FROM admin WHERE username='$username' AND password='$password'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $_SESSION['admin'] = $username; header("Location: admin_dashboard.php"); } else { echo "账号或密码错误!"; } } ?> ``` #### 3. 商品管理模块(`admin_product.php`) ```php <?php include 'config.php'; // 添加商品 if (isset($_POST['add_product'])) { $name = $_POST['name']; $price = $_POST['price']; $sql = "INSERT INTO products (name, price) VALUES ('$name', $price)"; $conn->query($sql); } // 删除商品 if (isset($_GET['delete_id'])) { $id = $_GET['delete_id']; $conn->query("DELETE FROM products WHERE id=$id"); } ?> ``` --- ### 三、码获取建议 1. **GitHub/Gitee搜索** - 关键词:`PHP商城后台原`、`PHP E-commerce Admin`。 - 推荐仓库: - [PHP-Simple-Shop](https://github.com/example/PHP-Simple-Shop)(示例项目,需自行验证) 2. **教育机构资** - 引用[4]提到的码191803可通过学术平台或联系作者获取完整工程文件。 --- ### 四、注意事项 1. **代码安全** - 原PHP需注意SQL注入防护(建议使用预处理语句)[^2]。 2. **授权协议** - 确认开项目的License(如MIT、GPL)是否符合商业使用要求[^1]。 3. **扩展性** - 若需长期维护,建议逐步引入MVC框架(如Laravel)提升结构清晰度[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值