转载请注明出处:
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
*/
@MLinkDefaultRouter
public 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
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
觉得博文有用,请点赞,请评论,请关注,谢谢!~