返回顶部
首页 > 资讯 > 精选 >怎么从外部浏览开启Android App
  • 451
分享到

怎么从外部浏览开启Android App

2023-06-15 10:06:22 451人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“怎么从外部浏览开启Android App”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么从外部浏览开启Android App”这篇文章吧。这里主要用的是第三方的东西,

这篇文章主要为大家展示了“怎么从外部浏览开启Android App”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么从外部浏览开启Android App”这篇文章吧。

这里主要用的是第三方的东西,就是魔窗中的mlink功能。想了解魔窗的朋友就到官网去看看吧。在这里我说一下我通过魔窗是怎么实现的。

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

<html>    <head>        <title>浏览器打开APP测试</title>        <script src="https://cdn.bootCSS.com/Jquery/3.1.1/jquery.js"></script>        <script src="Https://static.mlinks.cc/scripts/dist/mlink.min.js"></script>    </head>    <body>        <a id="btnOpenApp">打开APP</a>   <script>    new Mlink(        {        mlink: "Aa2F",        button: document.querySelector('a#btnOpenApp'),        autoLaunchApp : false,        autoRedirectToDownloadUrl: true,        downloadWhenUniversalLinkFailed: false,        inapp : true,        params: {              storyBoardKey:'DetailsActivity',              storyBoardId:'ProductDetail',              name:'TwoActivity',              productId:'1454456156'              }        })   </script>    </body></html>

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

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

autoLaunchApp : false,

autoRedirectToDownloadUrl: true,

downloadWhenUniversalLinkFailed: false,

inapp : true,

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

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

怎么从外部浏览开启Android 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:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.wingsofts.magicwindowdemo.MainActivity"    >  <Button      android:layout_centerInParent="true"      android:onClick="onClick"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="点我去详情页"      /></RelativeLayout>

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

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布局:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.wingsofts.magicwindowdemo.DetailsActivity"    ><TextView    android:text="我是详情页"    android:textSize="30sp"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    /></RelativeLayout>

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:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.wingsofts.magicwindowdemo.TwoActivity">    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:text="我是第二个页面"        android:textSize="40sp"        /></RelativeLayout>

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

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);    }}

布局:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.wingsofts.magicwindowdemo.SplashActivity"    ><TextView    android:textSize="30sp"    android:text="我是引导页!!"    android:layout_centerInParent="true"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    /></RelativeLayout>

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

以上是“怎么从外部浏览开启Android App”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 怎么从外部浏览开启Android App

本文链接: https://lsjlt.com/news/279588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么从外部浏览开启Android App
    这篇文章主要为大家展示了“怎么从外部浏览开启Android App”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么从外部浏览开启Android App”这篇文章吧。这里主要用的是第三方的东西,...
    99+
    2023-06-15
  • 如何从外部浏览开启Android App
    这里主要用的是第三方的东西,就是魔窗中的mlink功能。想了解魔窗的朋友就到官网去看看吧。在这里我说一下我通过魔窗是怎么实现的。 首先我们看一下浏览器上面的代码,这个就是我们从该页面...
    99+
    2024-04-02
  • win10怎么打开斯巴达浏览器 ie11开启Spartan浏览器教程
    在新版的win10预览版本中,IE11浏览器可以直接开启新的斯巴达Edge渲染引擎。win10怎么打开斯巴达浏览器?下面小编为大家带来ie11开启Spartan浏览器教程。 win10怎么打开斯巴达浏览器 ie11开启...
    99+
    2023-06-13
    win10 斯巴达浏览器 ie11 Spartan 斯巴达 浏览器
  • html5怎么实现外部浏览器唤起微信
    本篇内容主要讲解“html5怎么实现外部浏览器唤起微信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么实现外部浏览器唤起微信”吧!html 部分:<script sr...
    99+
    2023-06-27
  • win10预览版10041怎么开启斯巴达浏览器
      很多升级为win10 10041的用户对于新版本中没有斯巴达浏览器很是失望,其实win10预览版10041中内置了斯巴达渲染引擎,只有开启后就能使用,下面就和小编一起去看下win10 10041开启斯巴达浏览器的方法...
    99+
    2023-06-12
    斯巴达浏览器 win10预览版10041 浏览器 win10 预览 斯巴达
  • Android中通过外部程序启动App的三种方法
    第一种:直接通过包名: 代码如下: Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("...
    99+
    2022-06-06
    程序 方法 app Android
  • 怎么实现微信跳转wap外部浏览器接口
    本篇内容介绍了“怎么实现微信跳转wap外部浏览器接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!微信跳转外部浏览器的作用是什么?一般的链接...
    99+
    2023-06-05
  • 怎么从浏览器中删除Cookie
    这篇文章主要介绍了怎么从浏览器中删除Cookie的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么从浏览器中删除Cookie文章都会有所收获,下面我们一起来看看吧。删除浏览器中的Cookie在cookie的AP...
    99+
    2023-06-26
  • Android广播怎么实现App开机自启动
    今天小编给大家分享一下Android广播怎么实现App开机自启动的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概括在安卓...
    99+
    2023-06-30
  • 浏览器怎么打开javascript
    在当今的互联网中,Javascript可以说是最重要的编程语言之一。它广泛应用于网站和应用程序的开发,可以使网站和应用程序更加动态和交互。但是,对于初学者来说,掌握基础知识也尤为重要。本文将介绍如何在浏览器中打开Javascript。首先,...
    99+
    2023-05-17
  • Android编程开发从零开始编写一个轻量级浏览器
    目录返回栈FragmentNavHostBinding搜索页面暂时放一个EditViewMultiStackParentFragment在里面实现添加窗口效果图既然是浏览器,按照国际...
    99+
    2024-04-02
  • 怎么在HTML5中实现外部浏览器唤起微信分享
    本篇文章为大家展示了怎么在HTML5中实现外部浏览器唤起微信分享,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。html部分:<script src="mshare.js&q...
    99+
    2023-06-09
  • win10怎么打开ie浏览器
    这篇“win10怎么打开ie浏览器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10怎么打开ie浏览器”文章吧。win...
    99+
    2023-07-01
  • HTML5中外部浏览器唤起微信分享功能怎么实现
    小编给大家分享一下HTML5中外部浏览器唤起微信分享功能怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在做一个手机站,要求点击分享可以直接打开微信分享...
    99+
    2023-06-09
  • Android怎么实现app一键重启
    要在Android应用中实现一键重启的功能,可以通过以下步骤进行操作:1. 获取重启权限:在AndroidManifest.xml文...
    99+
    2023-10-23
    Android
  • python怎么从外部传入参数
    在Python中,可以使用命令行参数、环境变量、命令行交互和文件等方式将参数传入给脚本。1. 命令行参数:在命令行中使用`pytho...
    99+
    2023-10-08
    python
  • golang怎么从外部传入参数
    在 Golang 中,可以使用命令行参数或环境变量来从外部传递参数。 使用命令行参数: 可以使用 `os.Args` 来获取命令...
    99+
    2023-10-25
    golang
  • iOS和Android手机浏览器链接打开app store或应用市场下载软件
    iOS和Android手机浏览器链接打开app store或应用市场下载软件 1.Android主流手机跳转链接 // androidId 如:com.xxx.app// oppooppomarket...
    99+
    2023-09-01
    javascript 开发语言 ecmascript
  • Win10/Win11怎么启用Edge 浏览鼠标手势?
    微软在今年 3 月引入启用鼠标手势的“MouseGestureEnabled”策略之后,近日面向 Beta、Dev 和 Canary 频道发布的版本中,已提供鼠标手势功能。 Microsoft E...
    99+
    2023-06-02
    win10 Win11 edge浏览器 鼠标手势
  • win10自带的浏览器怎么打开
    今天小编给大家分享一下win10自带的浏览器怎么打开的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2022-12-08
    win10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作