第三方Android app调用ionic开发的app,并实现参数传递的一种暴力方式

      最近几个项目都是用ionic3开发的,遇到了好多坑,很多做原生APP的时候可以闭着眼睛都能解决的问题,现在感觉都是无解,还是功力不行,这次又遇到了一个问题,由第三方的APP想要调用我们做的ionic APP,还可能要传值过来,实现免登陆之类的需求,调用的话,问题倒是不大,第三方Android APP的话,通过设置要调用APP的包名、Activity和要传递的参数就可以了,没什么问题,原生的调用的基本方法:

//要调用另一个APP的包名
String packageName = "com.xxx.security";
//要调用另一个APP的activity名字
String activity = "com.xxx.security.MainActivity";
ComponentName component = new ComponentName(packageName, activity);
Intent intent = new Intent();
intent.setComponent(component);
intent.putExtra("userName", "张三");
intent.putExtra("passWord", "123456");
startActivity(intent);

      然后,到了ionic这边,首先,我们需要通过ionic cordova platform add android的命令来创建Android平台,并且执行ionic cordova build android 。然后在platfroms/android/src/com/xxx/security下面找到MainActivity.java文件,这个就是ionic打包成Android后的起始页面,在platfroms/android/下的AndroidMainifest.xml文件中通过android.intent.category.LAUNCHER也能找到起始页是哪一个。和原生APP一样,获取外部参数,并把获取到参数,拼接到launchUrl后面,launchUrl通常为index.html,是在config.xml里面配置的。

public class MainActivity extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // enable Cordova apps to be started in the background
        Bundle extras = getIntent().getExtras();
        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
            moveTaskToBack(true);
        }
        String userName = extras.getString("userName");
        String passWord = extras.getString("passWord");

        // Set by <content src="index.html" /> in config.xml
        if(passWord==null || userName==null)
        {
            
            loadUrl(launchUrl);
        }        
        else
        {
            Toast.makeText(this, parm, Toast.LENGTH_LONG).show();
            loadUrl(launchUrl+"?userName="+userName+"&passWord="+passWord);
        }
        
    }
}

到现在为止,其实还是顺利的,然后接下来,才疏学浅的我,怎么都不知道接下来该怎么做了,页面怎么获取参数?又怎么向后面实际要打开的页面去把这个参数传过去呢?这些参数传到哪里去了,哪里又会通过什么方法取出这些参数?我百度了差不多两天,都没有找到类似的贴子,全是ionic调用第三方,而不是第三方调用ionic,真的,一篇文章都没有,是不是我检索的方式有问题,心灰意冷。然后,突然,晚上做梦的时候,我想起了一个妙招。

在index.html中写script代码,首先在ionic项目根目录的src目录下下找到index.html文件,然后在里面敲如下代码:

<script>
    
    var userName =GetRequest().userName;
    var passWord =GetRequest().passWord;
    if(passWord!=null || userName!=null)
    {
      window.localStorage.setItem('userName',userName);
      window.localStorage.setItem('passWord',passWord);
    }
     
    
    function GetRequest() {   
       var url = location.search; //获取url中"?"符后的字串   
       var theRequest = new Object();   
       if (url.indexOf("?") != -1) {   
          var str = url.substr(1);   
          strs = str.split("&");   
          for(var i = 0; i < strs.length; i ++) {   
             theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);   
          }   
       }   
       return theRequest;   
    } 
</script>

     大家可以看到,我把获取到的参数通过localStorage存起来了,老子不传了,你们后面的页面,比如登陆页面,谁要用,自己去取吧,哈哈哈哈,是不是很暴力,但还真能解决问题啊,怎么存,存成什么样子,随便,希望能帮到大家。

     当然,最后,还是觉得自己这是玩野路子,耍小聪明,不过我一直是野路子,希望哪位知道该怎么解决这个问题的朋友,能教教我,给我留个言,谢谢啦。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1 简介 1、Native APP(原生) 2、Hybrid APP(混合) 3、React Native Hybrid App按网页语言与程序语言的混合,通常分为三种类型:多View混合型,单View混合型,Web主体型。 2 技术 2.1 技术选型 Ionic 2.1.1 Ionic介绍 Ionic是一款基于Angular、Cordova的强大的HTML5移动应用开发框架,可以快速创建一个跨平台的移动医用。可以快速开发移动APP、移动WEB页面、微信公众平台应用,混合APP WEB页面。 2.1.2 Ionic和cordova、Angular关系 Ionic = cordova + Angular + ionic Css Ionic 是完全基于谷歌的 Angular 框架,在 Angular 基础上面做了一些封装,让我们可以更快速和容易的开发移动的项目。Ionic 调用原生的功能是基于 Cordova,Cordova 提供了使用JavaScript 调用 Native 功能,ionic 自己也封装了一套漂亮的 CSS UI 库。 2.1.3 开发工具 Visual Studio Code 2.1.4 管理工具 Git 2.2 环境搭建 2.2.1 概述 2.2.2 JDK 2.2.2.1 版本 jdk1.8 2.2.2.2 配置 JAVA_HOME PATH CLASSPATH 2.2.3 Apache ant 2.2.3.1 版本 1.9.12 2.2.3.2 解压 2.2.3.3 配置 ANT_HOME: D:\android\apache-ant-1.10.4 Path: %ANT_HOME%\bin 2.2.3.4 查看安装版本 ant –v 2.2.4 android SDK 2.2.4.1 版本 r24.4.1 2.2.4.2 配置 ANDROID_SDK_HOME: D:\Android\android-sdk-windows Path:%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools 2.2.4.3 SDK 通过SDK Manager下载相关的版本 2.2.4.4 查看信息 android -h 2.2.5 node.js 2.2.5.1 版本 8.11.3 2.2.5.2 安装 2.2.5.3 查看版本 node –v npm -v 2.2.6 npm/cnpm 2.2.6.1 安装npm nodejs已经集成了npm 2.2.6.2 安装 cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 2.2.7 cordova 2.2.7.1 版本 8.0.0 2.2.7.2 安装 npm install -g cordova 可以使用cnpm代替npm cnpm install -g cordova ionic 2.2.7.3 查看版本 cordova -v 2.2.8 ionic 2.2.8.1 版本 3.20.0 2.2.8.2 安装 npm install –g ionic 可以使用cnpm代替npm cnpm install -g cordova ionic 2.2.8.3 查看版本 ionic –v 2.2.8.4 查看信息 ionic info 3 项目 3.1 创建 3.1.1 新建 3.1.2 启动 3.1.3 打包 3.1.3.1 添加 3.1.3.2 生产release版apk(签名后安装) 3.1.3.3 生成debug版apk 3.1.4 签名 3.1.4.1 生成签名文件 keytool -genkey -v -keystore testapp.keystore -alias testapp.keystore -keyalg RSA -validity 20000 3.1.4.2 apk签名 jarsigner -verbose -keystore testapp.keystore -signedjar app-release-signed.apk app-release-unsigned.apk testapp.keystore 3.1.5 安装 安卓手机安装使用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值