1***@qq.com
1***@qq.com
  • 发布:2019-11-01 10:42
  • 更新:2019-11-01 10:42
  • 阅读:1559

魔改MUI离线打包app解决拔插扫描枪重启app问题及指定App的mainactivity

分类:5+ SDK

           MUI这套H5应用框架非常值得肯定, 但也许它的应用少有涉及工业,activity一旦发生usb外接输入设备(如扫描枪)的排插就会导致重启, 这对于用家来讲是个不好的体现, 这个问题我已经在dcloud上反映过, https://ask.dcloud.net.cn/question/81362, 后来在群里有个小哥可能认识mui公司的人才有人理会解决, 但回复说要等hbuildx版本升级才行.

       为了不影响进度, 经过若干试验,发现原来的主Activity为PandoraEntryActivity, 那么我新建一个MyMainActivity extends它并在activity的configChanges里面加上 keyboard即可:

android:configChanges="orientation|keyboardHidden|keyboard|navigation"

       新开一个MainActivity的好处还有, 可以在app启动的时候开自己的后台服务, app结束的时候打扫现场.
        原app并不是一开始就以PandoraEntryActivity为启动activity,而是由一个临时的activity启动, 根据传入的参数is_stream_app加以判断,从而启动WebAppActivity或PandoraEntryActivity,为了完美接入, 也写了一个启动activity,在原本启动PandoraEntryActivity的地方换成MyMainActivity.

/
com.freestyle.android.h5plugin
Created by rocklee , 2019/3/8
/
public class MyStartActivity extends Activity {
@Override
protected void onCreate(Bundle var1) {
super.onCreate(var1);
Intent var2 = this.getIntent();
boolean var3 = false;
try {
var3 = var2.getBooleanExtra("is_stream_app", var3);
} catch (Exception var5) {
var5.printStackTrace();
this.finish();
return;
}

    if (var3) {  
        var2.setClass(this, WebAppActivity.class);  
        var2.putExtra("is_stream_app", true);  
    } else {  
        var2.putExtra("short_cut_class_name", PandoraEntry.class.getName());  
        var2.setClass(this, MyMainActivity.class);  
    }  

    this.startActivity(var2);  
    (new Handler()).postDelayed(new Runnable() {  
        public void run() {  
            MyStartActivity.this.finish();  
        }  
    }, 20L);  
}  

}
最后贴上MyMainActivity的代码

/
com.freestyle.android.h5plugin
Created by rocklee , 2019/11/1
/

public class MyMainActivity extends PandoraEntryActivity {
//private Bridge mBridge;
private Handler mUIHandler;
@Override
protected void onStart(){
super.onStart();
mUIHandler.postDelayed(()->{
WebView.setWebContentsDebuggingEnabled(true);
},3000);
}
private void patchApplication(){
}
@Override
public void onDestroy(){
FRPlugins.quit();
super.onDestroy();
}
@Override
public void onCreate(Bundle var1) {
super.onCreate(var1);
patchApplication();
mUIHandler=new Handler(getMainLooper());
//mBridge=new Bridge(this);
FRPlugins.init(this);
Config.init(this);
}
}
 
————————————————
版权声明:本文为CSDN博主「OK_boom」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rocklee/article/details/102852575

0 关注 分享

要回复文章请先登录注册