Android开发-魔窗DeeplinkDemo-AndroidStudio

来源:互联网 发布:解析度分析软件 编辑:程序博客网 时间:2024/06/15 01:08
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/70238463
觉得博文有用,请点赞,请评论,请关注,谢谢!~


老规矩,先上GIF动态图,看个效果,如果符合你的项目或者确定你要了解的内容,再往下看吧:




1、注册魔窗账号:

http://mgnt.magicwindow.cn/

2、新增产品:

2.1、Android 应用名称:随便写

2.2、Android 包名:要写对

2.3、Android URI Scheme:随便写,注意全小写,但是要记住(Demo的URI Scheme是:mwshowbywh://)

2.4、Android 下载地址:随便写

2.5、iOS:这里不演示,但是有必填选项,随便敲几个字母即可

2.6、Android 系统分配一个App Key,请记住(Demo的App Key是:68JWNQRU1KOGF124040VES4XH51BF5VN)



3、添加mLink:

3.1、mLink服务名称:随便写,比如 帖子页面、商品页面

3.2、mLink服务key:随便写,注意必须全小写,比如bbs、goods

3.3、Android URI:我不知道什么要这么写,开发文档提供的格式,照搬吧,比如:bbs?name=:name、goods?name=:name

3.4、系统分配默认短连接:帖子页面:https://a.mlinks.cc/AK7F、商品页面:https://a.mlinks.cc/AKoU




4、完事了,上代码:

4.1、导入jar包:

http://www.magicwindow.cn/download.html
https://sdk.mlinks.cc/MW_SDK_ANDROID_3.9.161221.zip

4.2、build.gradle:

apply plugin: 'com.android.application'android {    compileSdkVersion 25    buildToolsVersion "25.0.2"    defaultConfig {        applicationId "com.iwanghang.myapplication"        minSdkVersion 15        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}repositories {    // 魔窗    flatDir {        dirs'libs'    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.3.0'    testCompile 'junit:junit:4.12'    compile files('libs/libammsdk.jar')    // 魔窗    compile(name:'MagicWindowSDK', ext:'aar')}

4.3、AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.iwanghang.myapplication">    <!-- 访问网络 -->    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <!-- 获取WIFI信息 -->    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <!-- 允许访问GPS -->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <!-- 允许应用程序写数据到外部存储设备(主要是SD卡) -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <!-- 在sdcard中创建/删除文件的权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <!-- 请求访问使用照相设备 -->    <uses-permission android:name="android.permission.CAMERA" />    <!-- 开启闪光灯权限 -->    <uses-permission android:name="android.permission.FLASHLIGHT" />    <uses-feature android:name="android.hardware.camera" />    <uses-feature android:name="android.hardware.camera.autofocus" />    <uses-feature android:name="android.hardware.camera.flash" />    <!-- 魔窗权限 -->    <!-- 连接互联网Internet权限 -->    <uses-permission android:name="android.permission.INTERNET" />    <!-- 允许应用程序联网,以便向我们的服务器端发送数据。 -->    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <!-- 判断程序是否在前台运行,必须 -->    <uses-permission android:name="android.permission.GET_TASKS" />    <!-- 检测手机基本状态 -->    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <!-- 缓存资源优先存入SDcard -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".SplashActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>            <!-- 以下是魔窗信息 -->            <intent-filter>                <data android:scheme="mwshowbywh" />                <action android:name="android.intent.action.VIEW" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="android.intent.category.BROWSABLE" />            </intent-filter>        </activity>        <!-- 以下是魔窗信息 -->        <!-- 总的activity,必须注册!!! -->        <activity            android:name="com.zxinsight.common.base.MWActivity"            android:configChanges="orientation|keyboardHidden|screenSize|navigation"            android:exported="true" />        <!-- 微信分享回调(教程没有演示 by iwanghang) -->        <!-- <activity android:name=".wxapi.WXEntryActivity" -->        <!-- android:theme="@android:style/Theme.Translucent.NoTitleBar" -->        <!-- android:configChanges="keyboardHidden|orientation|screenSize" -->        <!-- android:exported="true" -->        <!-- android:launchMode="singleTop" /> -->        <!-- MW sdk ID 此处跟activity同级,需要放在Application内,MW_APPID(也就是后台的” 魔窗AppKey”)不能更改 -->        <meta-data            android:name="MW_APPID"            android:value="68JWNQRU1KOGF124040VES4XH51BF5VN" />        <!-- 渠道名称MW_CHANNEL不能更改 -->        <meta-data            android:name="MW_CHANNEL"            android:value="渠道中文随便写" />        <!-- 以上是魔窗信息 -->        <activity android:name=".GoodsActivity" />        <activity android:name=".MainActivity" />        <activity android:name=".BbsActivity"></activity>    </application></manifest>

4.4、SplashActivity(欢迎页面):

package com.iwanghang.myapplication;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import com.zxinsight.MLink;import com.zxinsight.MWConfiguration;import com.zxinsight.MagicWindowSDK;import com.zxinsight.Session;import com.zxinsight.mlink.MLinkCallback;import com.zxinsight.mlink.MLinkIntentBuilder;import java.util.Map;public class SplashActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_splash);        // 初始化魔窗        initMW();        // 初始化魔窗 跳转router调用        if (getIntent().getData()!=null) { // 如果不为空,说明是通过scheme跳转进来的            MLink.getInstance(this).router(getIntent().getData());            // 初始化魔窗 跳转后结束当前activity            finish();        } else {            //TODO:动画等耗时操作结束后再调用checkYYB(),一般写在starActivity前即可            MLink.getInstance(this).checkYYB();            gotoHome(); // 如果有欢迎页面(闪屏页 开屏页面 需要这个方法)            //register (this);        }    }    /**     * 初始化魔窗     */    private void initMW() {        MWConfiguration config = new MWConfiguration(this);//        设置渠道,非必须(渠道推荐在AndroidManifest.xml内填写)//        config.setChannel("你的渠道名称")//                //开启Debug模式,显示Log,release时注意关闭//                .setDebugModel(true)//                //带有Fragment的页面。具体查看2.2.2//                . setPageTrackWithFragment(true)//                //设置分享方式,如果之前有集成sharesdk,可在此开启//                . setSharePlatform (MWConfiguration. ORIGINAL);        config.setDebugModel(true)                . setSharePlatform (MWConfiguration. ORIGINAL);        MagicWindowSDK.initSDK(config);        MLink.getInstance(this).registerWithAnnotation(this);        // 初始化魔窗 MLink注册        MLink.getInstance(this).router(this, getIntent().getData());    }    private void gotoHome() {        startActivity(new Intent(this, MainActivity.class));        finish();    }    private void register(Context context){        MLink.getInstance(context).registerDefault(new MLinkCallback() {            @Override            public void execute(Map paramMap, Uri uri, Context context) {                //HomeActivity 为你的首页                MLinkIntentBuilder.buildIntent(paramMap, context, MainActivity.class);            }        });        // mLinkKey:  mLink 的 key, mLink的唯一标识        MLink.getInstance(context).register("goods", new MLinkCallback() {            public void execute(Map paramMap, Uri uri, Context context) {                MLinkIntentBuilder.buildIntent(paramMap, context, GoodsActivity.class);            }        });    }    @Override    protected void onPause() {        // 魔窗所需 Session为基础功能,必须集成,否则无法获取到活动。        Session.onPause(this);        super.onPause();    }    @Override    protected void onResume() {        // 魔窗所需 Session为基础功能,必须集成,否则无法获取到活动。        Session.onResume(this);        super.onResume();    }}

4.5、MainActivity:

package com.iwanghang.myapplication;import android.content.Intent;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.zxinsight.mlink.annotation.MLinkDefaultRouter;/** * 魔窗 在程序主页(默认页面)如下注册: * @MLinkDefaultRouter */@MLinkDefaultRouterpublic class MainActivity extends AppCompatActivity {    private Button button_goto_goods;    private Button button_mc_goto_goods;    private Button button_goto_bbs;    private Button button_mc_goto_bbs;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 商品页面        button_goto_goods = (Button) findViewById(R.id.button_goto_goods);        button_goto_goods.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.setClass(MainActivity.this, GoodsActivity.class);                MainActivity.this.startActivity(intent);            }        });        button_mc_goto_goods = (Button) findViewById(R.id.button_mc_goto_goods);        button_mc_goto_goods.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Uri uri = Uri.parse("https://a.mlinks.cc/AKoU");                Intent it = new Intent(Intent.ACTION_VIEW, uri);                startActivity(it);            }        });        // 帖子页面        button_goto_bbs = (Button) findViewById(R.id.button_goto_bbs);        button_goto_bbs.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.setClass(MainActivity.this, GoodsActivity.class);                MainActivity.this.startActivity(intent);            }        });        button_mc_goto_bbs = (Button) findViewById(R.id.button_mc_goto_bbs);        button_mc_goto_bbs.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Uri uri = Uri.parse("https://a.mlinks.cc/AK7F");                Intent it = new Intent(Intent.ACTION_VIEW, uri);                startActivity(it);            }        });    }}

4.6、GoodsActivity:

package com.iwanghang.myapplication;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.zxinsight.mlink.annotation.MLinkRouter;/** * 测试商品页面 * 魔窗 在程序除了主页以外的所有页面 如下注册: * @MLinkRouter * * //其中 mLinkKey1和 mLinkKey2是此页面的 mLink Key。如果只有一个,写一个即可。 *  @MLinkRouter(keys={"mLinkKey1"," mLinkKey2"}) */@MLinkRouter(keys={"goods"})public class GoodsActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_goods);    }}

4.7、BbsActivity:

package com.iwanghang.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import com.zxinsight.mlink.annotation.MLinkRouter;/** * 帖子商品页面 * 魔窗 在程序除了主页以外的所有页面 如下注册: * @MLinkRouter * * //其中 mLinkKey1和 mLinkKey2是此页面的 mLink Key。如果只有一个,写一个即可。 *  @MLinkRouter(keys={"mLinkKey1"," mLinkKey2"}) */@MLinkRouter(keys={"bbs"})public class BbsActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_bbs);    }}


项目打包下载:http://download.csdn.net/detail/iwanghang/9818995


转载请注明出处:http://blog.csdn.net/iwanghang/article/details/70238463




欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式

微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com



觉得博文有用,请点赞,请评论,请关注,谢谢!~

3 0
原创粉丝点击