ferch
ferch
  • 发布:2020-03-26 19:46
  • 更新:2020-03-30 15:50
  • 阅读:3216

lib.5plus.base-release 是开源的么

分类:uni-app

lib.5plus.base-release 这是开源的么,现在需要修改io.dcloud.PandoraEntryActivity里的代码来监听一个物理按键的事件。要怎么处理,或者可以修改配置让uniapp的主容器activity变成我自己写的一个继承自io.dcloud.PandoraEntryActivity的activity么?求解答

2020-03-26 19:46 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

暂时不开源。你可以继承PandoraEntryActivity 重写相关逻辑。但要super回去。

  • ferch (作者)

    继承PandoraEntryActivity 怎么app从入口跳转到我自己写的继承的容器中,就是让整个uniapp都运行在我自定义的Activity中

    2020-03-30 17:11

  • DCloud_Android_ST

    回复 ferch: 修改AndroidManifest.xml呀 有什么猜疑?

    2020-03-30 17:18

  • ferch (作者)

    回复 DCloud_Android_ST: 现在的入口在PandoraEntry这个Activity里面,然后怎么从这个入口跳转到刚说的自己继承的PandoraEntryActivity里面去

    2020-03-30 17:33

  • DCloud_Android_ST

    回复 ferch: 哦 明白了。直接把你继承PandoraEntryActivity的activiy设置为首页试试

    2020-03-30 17:40

  • ferch (作者)

    回复 DCloud_Android_ST: 试过了,不可以,是不是在PandoraEntry里面做了初始化的操作。

    2020-03-30 17:50

  • DCloud_Android_ST

    回复 ferch: 怎么不可以 报错了还是什么情况

    2020-03-30 18:15

  • ferch (作者)

    回复 DCloud_Android_ST: 好的,可以了,再请教一下在这个自己继承的Activity中怎么获取到WXSDKEngine 这个对象,自己new一个发送的fireGlobalEventCallback 事件 vue端收不到,在WXModule 中通过 WXSDKEngine发送的vue中可以收到,推测在activity中 new 的这个WXSDKEngine 不是正在运行容器中的这个WXSDKEngine。

    2020-03-30 22:27

  • DCloud_Android_ST

    回复 ferch: 不行 只能在wxmodule中使用.

    2020-03-31 11:00

  • ferch (作者)

    回复 DCloud_Android_ST: 好的,上面的打错了,其实是想稳WXSDKInstance这个对象,是不是也不能在自己继承的PandoraEntryActivity 中发送 fireGlobalEventCallback 事件

    2020-04-01 11:39

  • ferch (作者)

    回复 DCloud_Android_ST: 然后还有个问题,我自己建的一个普通的Activity onKeyDown 事件都可以监听到,但是继承了PandoraEntryActivity 的Activity 就不能捕获一些特殊按键的 keyDown事件了(一个特殊硬件的keycode),是PandoraEntryActivity 继承的 WebappActivity 做了什么操作么,我跟了下代码看到也没做什么操作,但是那个特殊的按键就根本不走这个onKeyDown ,我自己写的普通的Activity 就走这个方法

    2020-04-01 11:42

  • DCloud_Android_ST

    回复 ferch: 你说的普通activity继承那个activity?

    2020-04-01 11:47

  • ferch (作者)

    回复 DCloud_Android_ST: 普通的是直接继承android 的Activity 的,继承自WebappActivity 也就是 PandoraEntryActivity 的那个按键不走 onKeyDown

    2020-04-01 16:28

  • ferch (作者)

    回复 DCloud_Android_ST:


    public class CPandoraEntryActivity extends WebAppActivity {  
    BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    Log.d("TAG","收到广播");
    }
    };

    @Override
    public void onResume() {
    super.onResume();
    BaseInfo.USE_ACTIVITY_HANDLE_KEYEVENT = true;
    registerReceiver(broadcastReceiver,
    new IntentFilter("com.supertom.DeviceKeyDown"));
    }

    public CPandoraEntryActivity() {

    super();
    }

    public boolean isStreamAppMode() {
    return false;
    }

    @Override
    public boolean onKeyUp(int i, KeyEvent keyEvent) {
    Log.e("TAG",i+" "+keyEvent.getKeyCode());
    return super.onKeyUp(i, keyEvent);
    }

    public boolean onKeyDown(int i, KeyEvent keyEvent) {
    Log.e("TAG",i+" "+keyEvent.getKeyCode());
    if (i == 139 ||i == 280 || i==24) {
    if (keyEvent.getRepeatCount() == 0 && keyEvent.getKeyCode()==24) {
    Intent intent = new Intent("com.supertom.DeviceKeyDown");
    sendBroadcast(intent);
    Log.e("TAG","done");
    }
    return true;
    }
    return super.onKeyDown(i, keyEvent);
    }
    }

    这是继承自WebappActivity的,不走onKeyDown


    public class MainActivity extends Activity {  
    TextView textView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_main);
    textView = findViewById(R.id.tv);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.e("TAG",keyCode+" "+event.getKeyCode());
    return super.onKeyDown(keyCode, event);
    }
    }

    这是普通的Activity ,会走onKeyDown(普通的按键继承自WebappActivity的也会走,返回,菜单,音量,但是硬件特殊的按键不走)

    2020-04-01 16:36

  • ferch (作者)

    回复 DCloud_Android_ST: 结贴,虽然不知道为何继承自WebAppActivity 的某些特殊按键不走 onKeyDown 方法,但解决方案已经找到了,覆盖 dispatchKeyEvent 方法即可监听到

    2020-04-02 12:37

该问题目前已经被锁定, 无法添加新回复