千家信息网

如何从外部浏览开启Android App

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章主要介绍了如何从外部浏览开启Android App的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何从外部浏览开启Android App文章都会有所收获,下面我们
千家信息网最后更新 2024年11月18日如何从外部浏览开启Android App

这篇文章主要介绍了如何从外部浏览开启Android App的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何从外部浏览开启Android App文章都会有所收获,下面我们一起来看看吧。

首先我们看一下浏览器上面的代码,这个就是我们从该页面上跳转打开app。

            浏览器打开APP测试                                打开APP       

mlink: "Aa2F",这个Aa2F就是我们在魔窗上配置的一个短链接最后面的mlink,比如,我的短链接是:http://a.mlinks.cc/Aa2F;

button: document.querySelector('a#btnOpenApp'),

autoLaunchApp : false,

autoRedirectToDownloadUrl: true,

downloadWhenUniversalLinkFailed: false,

inapp : true,

这些在官网上都有解释,我就不解释了;params就是我们要传递的参数。

好了,现在到了关键时刻了,就是我们app上面的配置了,先看我的项目目录:

先把魔窗这个包倒进来,然后在gradle上进行配置,我的是这样配置的:

apply plugin: 'com.android.application'apply plugin: 'me.tatarka.retrolambda'android {    compileSdkVersion 24    buildToolsVersion "24.0.0"    defaultConfig {        applicationId "com.wingsofts.magicwindowdemo"        minSdkVersion 15        targetSdkVersion 24        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    compileOptions {        targetCompatibility 1.8        sourceCompatibility 1.8    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:24.1.1'    compile "io.reactivex:rxandroid:1.2.0"    compile "io.reactivex:rxjava:1.1.7"    compile(name: 'MagicWindowSDK', ext: 'aar')}repositories {    flatDir {        dirs 'libs'    }}

然后在看看Myapp页面,我的是这样的:

package com.wingsofts.magicwindowdemo;import android.app.Application;import com.zxinsight.Session;public class MyApp extends Application {    @Override    public void onCreate() {        super.onCreate();        Session.setAutoSession(this);    }}

这里的session的作用是获取到活动。

MainActivity页面是这样的:

package com.wingsofts.magicwindowdemo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void onClick(View v) {        startActivity(new Intent(this, DetailsActivity.class));    }}

activity_main:

  

上面这两个页面就没什么好介绍的了,很平常的两个页面。

DetailsActivity页面:

package com.wingsofts.magicwindowdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;public class DetailsActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_details);    }}

activity_details布局:

TwoActivity页面:

package com.wingsofts.magicwindowdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class TwoActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_two);    }}

对应得布局是activity_two:

    

下面这一个页面很重要,基本上所有的重要代码都集中在这里:

package com.wingsofts.magicwindowdemo;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.zxinsight.MLink;import com.zxinsight.MWConfiguration;import com.zxinsight.MagicWindowSDK;import com.zxinsight.mlink.MLinkCallback;import com.zxinsight.mlink.MLinkIntentBuilder;import java.util.Iterator;import java.util.Map;import java.util.concurrent.TimeUnit;import rx.Observable;import rx.android.schedulers.AndroidSchedulers;public class SplashActivity extends AppCompatActivity {    private String DEMONAME = "com.wingsofts.magicwindowdemo";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_splash);        initSDK();//初始化SDK        registerLinks(this);//注册SDK        initMLink();    }    public void initMLink() {        Intent intent = getIntent();        Uri mLink = intent.getData();        //如果从浏览器传来 则进行路由操作        if (mLink != null) {            MLink.getInstance(this).router(this, mLink);            finish();        } else {            //否则执行原本操作            go2MainActivity();        }    }    //注册SDK    public void registerLinks(Context context) {        MLink.getInstance(context).registerDefault(new MLinkCallback() {            @Override            public void execute(Map paramMap, Uri uri, Context context) {                //默认的路由 如果没有匹配则转跳到 MainActivity 为你的首页                MLinkIntentBuilder.buildIntent(paramMap, context, MainActivity.class);            }        });        // testKey:  mLink 的 key, mLink的唯一标识,用于进行路由操作        MLink.getInstance(context).register("productDetail", new MLinkCallback() {            public void execute(Map paramMap, Uri uri, Context context) {                //!!!!!!!!注意 此处有坑,如果你的SplashActivity转跳有延迟,那么在此处转跳的延迟必须大于前者转跳时间                Observable.timer(1050, TimeUnit.MILLISECONDS)                        .observeOn(AndroidSchedulers.mainThread())                        .subscribe(aVoid -> {                            //MLinkIntentBuilder.buildIntent(paramMap, context, Class.forName(name));                            String name = (String) paramMap.get("name");                            Intent intent = new Intent();                            intent.setClassName(context, DEMONAME + "." + name);                            startActivity(intent);                        });            }        });    }    //初始化魔窗SDK    public void initSDK() {        MWConfiguration config = new MWConfiguration(this);        config.setDebugModel(true)                //带有Fragment的页面。具体查看2.2.2                .setPageTrackWithFragment(true)                //设置分享方式,如果之前有集成sharesdk,可在此开启                .setSharePlatform(MWConfiguration.ORIGINAL);        MagicWindowSDK.initSDK(config);    }    public void go2MainActivity() {        //延迟1秒转跳        Observable.timer(1, TimeUnit.SECONDS)                .observeOn(AndroidSchedulers.mainThread())                .subscribe(aLong -> {                    startActivity(new Intent(this, MainActivity.class));                    finish();                });    }    private void StartActivity(Map paramMap, Context context, Class clazz) {        Intent intent = new Intent(context, clazz);        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);        if (paramMap != null) {            Iterator iter = paramMap.entrySet().iterator();            while (iter.hasNext()) {                Map.Entry entry = (Map.Entry) iter.next();                String key = (String) entry.getKey();                String val = (String) entry.getValue();                intent.putExtra(key, val);            }        }        context.startActivity(intent);    }}

布局:

代码上面的我都有注释,在这里需要注意的是,传递参数的话一定要配置好,否则会出现错误。

关于"如何从外部浏览开启Android App"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何从外部浏览开启Android App"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

页面 浏览 配置 就是 面的 代码 布局 浏览器 知识 路由 延迟 重要 两个 内容 参数 篇文章 链接 解释 平常 没什么 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全宣传交通运输局 SRA数据库筛选 新疆互联网科技学院 宜宾网络安全教育活动成效 提示网络安全客户端 播放网络安全教育手抄报小学 广电网络安全施工协议 小学生教育与家庭教安全网络安全 王牌竞速有多少个服务器 网络技术在政治教学中的运用 网络安全法的考试题 联通手机卡连不上服务器 数据结构和数据库原理及应用 成都法治文化展馆软件开发 yii 数据库分页 长鑫存储有软件开发岗位吗 违反网络安全法有哪些后果 为知笔记 网络技术 无锡涉密信息系统集成软件开发 电子商务软件开发前景 南京苏言互联网科技有限公司 海康监控阿里云服务器 企业技术资料管理服务器 河北省政务网网络安全平台 成都银行网络安全招标 网络安全小视频手势舞 河北系统软件开发价位 u8管理员登录服务器 软件开发是专科还是本科 科技局互联网政务
0