游戏等单activity应用的集成方式

置顶 飞翔的蜗牛 9个月前 1,413次点击 来自 Android

很多游戏厂家利用了Unity或者Cocos之类的框架,只有一个Activity。此时如何集成?
名字解释:
SplashActivity:指的是首页,替换成你们首页的类名即可。同理activity_splash也替换成你们自己首页的布局
mwshow:指的是你们特有的scheme,替换成你们自己的scheme

①AndroidManifest.xml内配置好scheme,比如

        <activity
            android:name=".activity.SplashActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data android:scheme="mwshow" />
                <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内完成如下配置即可。

@Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_splash);
        initMW();
        registerForMLinkCallback();
        Uri mLink = getIntent().getData();
        MLink.getInstance(SplashActivity.this).deferredRouter();

        if (mLink != null) {
            MLink.getInstance(this).router(mLink);
        } else {
            MLink.getInstance(this).checkYYB();
        }
    }
    private void initMW() {
        MWConfiguration config = new MWConfiguration(this);
        config.setDebugModel(true)
                .setPageTrackWithFragment(true)
                .setWebViewBroadcastOpen(true)
                .setSharePlatform(MWConfiguration.ORIGINAL);
        MagicWindowSDK.initSDK(config);
    }
    private  void registerForMLinkCallback() {
        MLink mLink = MLink.getInstance(this);
        mLink.registerDefault(new MLinkCallback() {
            @Override
            public void execute(Map<String, String> paramMap, Uri uri, Context context) {
                //todo: 获取动态参数,用来处理
                String id = "";
                if (paramMap != null) {
                    id = paramMap.get("id");
                } else if(uri!=null) {
                    id = uri.getQueryParameter("id");
                }
                //todo: 此处可以根据获取的动态参数id来做相应的处理

//                Intent intent = new Intent(context, WXEntryActivity.class);
//                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
//                context.startActivity(intent);
            }
        });
    }

    @Override
    public void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Uri mLink = intent.getData();
        setIntent(intent);
        if (mLink != null) {
            MLink.getInstance(this).router(mLink);
        } else {
            MLink.getInstance(this).checkYYB();
        }
    }
1 条回复
飞翔的蜗牛 7个月前

经常有客户反馈,游戏集成魔窗时,通过链接打开App时出现崩溃。
此问题是App本身的问题,具体可以根据崩溃信息自己debug一下。


魔窗, 移动互联网生态领导者