• Tag Archives: uniapp

使用uniapp离线打包底座时获取getApplicationContext()的方法

在对应的类中静态引入以下方法即可:

import static io.dcloud.common.util.ReflectUtils.getApplicationContext;

然后再对应的业务逻辑中直接使用getApplicationContext()即可获取到。

事实上我用jd-gui查看其编译后代码,看见好像这种工具类也能自己写,其代码如下(未验证过):

import android.context.Context;

public static Context getApplicationContext(){
	Context context = null;
	try{
		Context = (Context)Class.forName("android.app.ActivityThread").getDeclaredMethod("currentApplication",new Class[0]).invoke((Object)null, new Object[0]);
	}catch(Exception e){
		null.printStackTrace();
	}
}

 

uniapp自定义入口Activity并进行交互

第一步:首先新建自己的MainActivity

package cn.com.sway.app

import android.os.Bundle;

import io.dcloud.WebAppActivity;

public class MainActivity extends WebAppActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    public boolean isStreamAppMode() {
        return false;
    }

}

注意:

1、务必集成io.dcloud.WebAppActivity这个类

2、必须要有isStreamAppMode方法,如果没有这个方法,会无法正常加载页面

第二部:在AndroidManifest.xml里修改入口Activity

    <activity
            android:name="cn.com.sway.app.MainActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:hardwareAccelerated="true"
            android:theme="@style/TranslucentTheme"
            android:screenOrientation="user"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

其他:在前端与MainActivity进行交互

前端这么写:

var main = plus.android.runtimeMainActivity();//获取当前的Activity
var res = main.getResData();//直接调用自定义Activity中的getResData方法
console.log(res);

在MainActivity补充getResData方法:

public String getResData(){
    return data;
}

 

close