标签: 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;
    }