精华内容
下载资源
问答
  • 在需要登录页面之前检测登录状态,但是如果用户不输入账号密码的话,点击自己做的返回按钮还好...摸索一:监听原生返回按钮,设置返回步数为2. 结果:执行功能正确,但是代码陷入死循环。 摸索中… 已经解决官网有 ...

    在需要登录页面之前检测登录状态,但是如果用户不输入账号密码的话,点击自己做的返回按钮还好,但是使用原生返回按钮,如果返回就会检测再次进入登录,返回就检测,再次进入登录,死循环。
    摸索一:监听原生返回按钮,设置返回步数为2.
    结果:执行功能正确,但是代码陷入死循环。
    摸索中…
    已经解决官网有

    展开全文
  • 做过unity与安卓原生交互的同学应该都知道,我们在unity里面调用安卓原生的activity,按Home键返回到桌面,之后重新进入unity场景,安卓原生的activity就会被杀掉。 其实这个问题做过安卓的人都知道,这个关乎到安卓...

    做过unity与安卓原生交互的同学应该都知道,我们在unity里面调用安卓原生的activity,按Home键返回到桌面,之后重新进入unity场景,安卓原生的activity就会被杀掉。

    其实这个问题做过安卓的人都知道,这个关乎到安卓对于activity的运行机制问题,这些问题这里不想再多说了,网上有太多关于launchMode的解答例如:

    http://blog.csdn.net/liuhe688/article/details/6754323/

    如果对activity 的四种launchMode:1.standard、2.singleTop、3.singleTask、4.singleInstance不了解 可以先去查查资料。

    因为unity默认程序打包出来的Androidmanifest配置android:launchMode=”singleTask”,一看到这里,做安卓开发的同学基本就知道了,哦原来是这里搞的鬼,所以只要将launchMode=”singleTask”改成标准的launchMode=”singleInstance”就可以了,因为默认就是标准的所以可以直接把这一行直接去掉。

    但是你以为这样就可以了么,众所周知,安卓的手机何其之多,所以就会出现各种的定制系统,出现各种奇奇怪怪的问题也是再所难免,对于程序员来说,有bug实在是太正常不过了,我们最不怕的就是bug,只要给出相应的机子,重现出相应的bug,对我们来说就不是bug 了,而是一个丢在臭水沟的西瓜皮,烂掉只是时间的问题而已。

    好了说重点,就是在将launchMode改成标准的之后在很多手机会出现这样一种情况安装完应用之后直接点击打开按钮进入游戏之后按HOME键退到桌面,再次点击应用图标进入游戏就会出现重新开始应用(其实这里是是因为重新创建主activity,才会看到重启游戏),在某些安卓发布平台就会因为这个问题而导致审核不通过,然后发给你的日志报错信息只能看到:

    07-21 14:17:15.714 632-632/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    
    07-21 14:17:15.714 632-632/? A/DEBUG: Build fingerprint: 'Xiaomi/land/land:6.0.1/MMB29M/V8.2.3.0.MALCNDL:user/release-keys'
    
    07-21 14:17:15.714 632-632/? A/DEBUG: Revision: '0'
    
    07-21 14:17:15.714 632-632/? A/DEBUG: ABI: 'arm'
    
    07-21 14:17:15.714 632-632/? A/DEBUG: pid: 25450, tid: 25721, name: UnityMain  >>> com.sinyee.bowenk <<<
    
    07-21 14:17:15.714 632-632/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdc
    
    07-21 14:17:15.726 632-632/? W/debuggerd: type=1400 audit(0.0:1386133): avc: denied { search } for name="com.sinyee.bowenk" dev="dm-1" ino=138908 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
    
    07-21 14:17:15.768 632-632/? A/DEBUG:    r0 00000000  r1 00000001  r2 df7d1a30  r3 00000000
    
    07-21 14:17:15.769 632-632/? A/DEBUG:    r4 e140bc20  r5 df7d13e4  r6 df7d13e8  r7 df7d1510
    
    07-21 14:17:15.769 632-632/? A/DEBUG:    r8 efc2a101  r9 df7d1510  sl 00000001  fp df7d138c
    
    07-21 14:17:15.769 632-632/? A/DEBUG:    ip df7d1a90  sp df7d1218  lr e12ff97c  pc e109b154  cpsr a00f0010
    
    07-21 14:17:15.773 632-632/? A/DEBUG: backtrace:
    
    07-21 14:17:15.773 632-632/? A/DEBUG:    #00 pc 00021154  /data/app/com.sinyee.bowenk-1/lib/arm/libmono.so
    
    07-21 14:17:15.773 632-632/? A/DEBUG:    #01 pc 001f2738  /data/app/com.sinyee.bowenk-1/lib/arm/libmono.so (mono_runtime_invoke+136)
    
    07-21 14:17:15.773 632-632/? A/DEBUG:    #02 pc 003e93a0  /data/app/com.sinyee.bowenk-1/lib/arm/libunity.so
    
    07-21 14:17:15.773 632-632/? A/DEBUG:    #03 pc 0034e548  /data/app/com.sinyee.bowenk-1/lib/arm/libunity.so
    
    07-21 14:17:15.773 632-632/? A/DEBUG:    #04 pc 000f78e8  /data/app/com.sinyee.bowenk-1/lib/arm/libunity.so
    
    07-21 14:17:15.773 632-632/? A/DEBUG:    #05 pc 00387998  /data/app/com.sinyee.bowenk-1/lib/arm/libunity.so
    
    07-21 14:17:15.774 632-632/? A/DEBUG:    #06 pc 0038d1e0  /data/app/com.sinyee.bowenk-1/lib/arm/libunity.so
    
    07-21 14:17:15.774 632-632/? A/DEBUG:    #07 pc 004e2c58  /data/app/com.sinyee.bowenk-1/lib/arm/libunity.so
    
    07-21 14:17:15.774 632-632/? A/DEBUG:    #08 pc 01167eeb  /data/app/com.sinyee.bowenk-1/oat/arm/base.odex (offset 0xa1e000)

    乍一看,啊,是unity原生层报错,这他妈怎么搞,难道去反编译unity的.so来看,不仅麻烦还不一定看的懂。

    我的解决方法:

    将unity项目打成eclipse工程,就是打包的时候将google Android project勾起来如图001;
    这里写图片描述

    然后,将工程用eclipse或者Android studio打开,我们这边已经有用Android studio写好模板 只要把资源复制过来就可以了。然后我这边在app下创建一个UnityMain.java来作为启动activity。只要在这里面做下判断如果游戏activity存在就不再重新启动了,脚本如下:

    public class UnityMain extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if (App.get().mainActivity != null) { //这里是判断应用的activity是否存在,存在的话直接结束这里,否则启动应用
                finish();
           } else {
               Intent intent = new Intent(this, Main.class); //这里的Mian就是启动unity的类
               startActivity(intent);
               finish();
            }
          }
    }

    好了,这就是我的解决办法,如果有更好的方法也可以分享出来。

    展开全文
  • 在Cocos中,监听cc.SystemEvent.EventType.KEY_DOWN事件,可以实现监听到安卓返回事件,实现方案如下:(此种情况无法使用原生的onKeyDown方法监听到物理按键,Cocos对此事件进行拦截处理) onLoa

    背景:在CocosCreater加载一个Scene后,打开游戏或者打开一个弹窗,这个时候如果触发Android的返回按键,会导致应用直接关闭。在此种情况,需要监听安卓的返回事件,然后将场景中打开的弹窗或者正在进行的游戏进行关闭,然后在退出应用。

    实现:

    在Cocos中,监听cc.SystemEvent.EventType.KEY_DOWN事件,可以实现监听到安卓的返回事件,实现方案如下:(此种情况无法使用原生的onKeyDown方法监听到物理按键,Cocos对此事件进行拦截处理)

        onLoad () {
            cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.onKeyDown,this);
        },
    
      
        onDestroy() {
            cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        },
    
        onKeyDown(event) {
            switch(event.keyCode) {
                case cc.macro.KEY.back://该值在CocosCrater 2.3添加使用
                    console.log("----onKeyDown------");
                    this.onBackPressed();           
                    break;
            }
            cc.log("---onKeyDownClicked--------b-------");
        },
    
        onBackPressed() {
            //_amusementPark是通过预制资源实现的一个弹窗,如果弹窗打开,先关闭弹窗,然后在退出应用
            if(this._amusementPark != null && this._amusementPark.isValid) {
                this._amusementPark.destroy();
                 this._amusementPark = null;
            } else {
                console.log("-----onBackPressed----");
                // cc.director.end();//该种方式关闭应用会一直报错。
                //
                cc.director.pause();
                cc.audioEngine.stopAll();
                if(cc.director.isPaused()) {
                    cc.game.end();
                }
            } 
        },

    测试以上实现方案在安卓10的系统上,不能正常生效。但是此种情况原生的onKeyDown方法被调用,

    所以此种情况,在原生端的onKeyDown中实现方法的监听,然后调用CocosCreater中的js方法处理返回事件。这样两种方案结合,可以实现对各版本安卓系统适配。

    AppActivity.java

    //AppActivity中的代码
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if(keyCode == KeyEvent.KEYCODE_BACK) {
                Cocos2dxHelper.runOnGLThread(new Runnable() {
                    @Override
                    public void run() { 
          Cocos2dxJavascriptJavaBridge.evalString("cc.game.jsBridge.onBackPressed();");
                    }
                });
                return true;
            } else {
                return super.onKeyDown(keyCode, event);
            }
        }
    
    
        //js中的代码
         onBackPressed() {
            console.log("----onBackPressed----");
        },

     

    展开全文
  • ionic+angularJs 内嵌video 标签全屏播放视频 点击安卓物理返回键的时候 页面完全变样了, 竖屏展示了横屏的内容解决办法如下: 修改原生 CordovaWebViewImpl文件 public void hideCustomView() { // TODO ...

    ionic+angularJs 内嵌video 标签全屏播放视频 点击安卓物理返回键的时候 页面完全变样了,

    竖屏展示了横屏的内容解决办法如下:

    修改原生 CordovaWebViewImpl文件

        public void hideCustomView() {
    
            // TODO fixed by andrew.wen for 播放视屏横屏之后在点击物理返回键会导致展示出错 故先翻转屏幕
            if( cordova.getActivity().getRequestedOrientation()== ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE){
                cordova.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
            }
    
            // This code is adapted from the original Android Browser code, licensed under the Apache License, Version 2.0
            if (mCustomView == null) return;
            LOG.d(TAG, "Hiding Custom View");
    
            // Hide the custom view.
            mCustomView.setVisibility(View.GONE);
    
            // Remove the custom view from its container.
            ViewGroup parent = (ViewGroup) engine.getView().getParent();
            parent.removeView(mCustomView);
            mCustomView = null;
            mCustomViewCallback.onCustomViewHidden();
    
            // Show the content view.
            engine.getView().setVisibility(View.VISIBLE);
        }
    

     

    展开全文
  • vue里监听安卓的物理返回键

    千次阅读 2018-11-09 10:23:00
    Hybrid App中,原生内嵌H5单页,由于安卓是有物理返回键的,按安卓物理返回键的时候会返回到上一个路由。 实际中需求是:当有弹层的时候,按物理返回键是关闭弹层,是页面的时候才执行返回上一个路由,所以需要对...
  • 苹果手机在iPhone X上已经实现了全手势操作,经典Home已被剔除,而原生安卓系统则在去年的Pie上正式加入手势操作。在原生安卓9系统中,点击导航栏的小“药丸”就可以返回桌面,长按会启动谷歌助理,左右滑动能够...
  • 原标题:向返回键说拜拜,安卓10向全面屏手势继续迈进【PConline 资讯】全面屏在手机的应用已经愈发常见,更大的屏幕挤占了原本留给实体按键排布的位置,全面屏手势也就应运而生。苹果手机在iPhone X上已经实现了全...
  • 原标题:安卓10.0上手:新版手势放弃返回键,操作堪比iOS自iPhone X移除实体Home...原生安卓9.0上,传统的三大金刚键被修改为两颗,也就是把默认位于最右侧的最近程序按钮舍弃,保留左侧的返回键和“胶囊”状Home。...
  • 使用 React Native开发,iOS搞完,开始适配安卓,由于木有接触过安卓,所以碰到了很多问题,第一个问题,安卓返回键BackAndroid问题, 我写了一个工具类,来搞定,其中用到了Java原生代码与js交互;好吧,上代码: ...
  • ­ 自iPhone X移除实体Home键...­ 原生安卓9.0上,传统的三大金刚键被修改为两颗,也就是把默认位于最右侧的最近程序按钮舍弃,保留左侧的返回键和“胶囊”状Home。主要操作有:单击Home回到主页、单击返回即回到...
  • 原生安卓9.0上,传统的三大金刚键被修改为两颗,也就是把默认位于最右侧的最近程序按钮舍弃,保留左侧的返回键和“胶囊”状Home。主要操作有:单击Home回到主页、单击返回即回到上一级、长按...
  • 鲁大师机情烩汇集每日重点,...原生安卓9.0上,传统的三大键被修改为两颗,将默认最右侧的最近程序按钮舍弃,保留左侧的返回键和“胶囊”状Home,操作变成了:单击Home回到主页、单击返回即回到上一级等。现在,在...
  • 2:对于如Esc、F2等的功能安卓原生浏览器、UC、海豚得到的charCode和keyCode均为0,chrome和火狐可以得到正确的键值。 服务器端利用js判断按键键值: //判读浏览器类型 function getOs() { if ...
  • 在使用html5开发app时,并不能像Android原生那样调取手机自身的方法。而cordova正好弥补了html5这一缺陷。 一,在cordova中文网http://cordova.axuer.com/docs/zh-cn/latest/,搜索"backbutton",如下图: 页面会...
  • 思路:APP与H5,互发消息,由H5进行控制物理返回键,告诉APP是退出还是返回上一级 1、uniapp设置,在uniapp使用web-view的地方处理,不要uniapp原生的tabbar,同时使用onBackPress方法控制跳转,由APP与h5约定的...
  • 问题描述:在安卓机上点击手机自带的返回键会返回上一级路由并重新加载,而ios机上并不会重新加载 分析:需要在进入页面时加入监听,并在页面离开时移除监听。因为home页面是个列表滚动,所以采用了keep-alive路由...
  • 需求:APP内页面音频播放时,原生app的返回或者安卓ios的物理键返回返回时,暂停音频播放。 方法:浏览器标签页被隐藏或显示的时候会触发visibilitychange事件.点击查看介绍 例子:当你切换到另一个标签时视频会...
  • 原生安卓9.0上,传统的三大金刚键被修改为两颗,也就是把默认位于最右侧的最近程序按钮舍弃,保留左侧的返回键和“胶囊”状Home。主要操作有:单击Home回到主页、单击返回即回到上一级、长按...
  • 最近在学习使用 React Native开发,iOS搞完,开始适配安卓,由于木有接触过安卓,所以碰到了很多问题,第一个问题,安卓返回键BackAndroid问题, 我写了一个工具类,来搞定,其中用到了java原生代码与js交互;好吧,下面...
  • Android 10,打开最近任务中的一个应用,双击返回键,紧接着点击菜单键 或者 快速依次点击返回键 Home键 菜单键,这个应用都会从最近任务消失掉,又是Google的坑啊 分析: 看过我之前文章的应该有印象,我的三部...
  • 后者的返回键则通常位于 APP 左上角,抑或是通过右滑屏幕返回。安卓 P 手持操作(图片来源:谷歌)在原生 Android P 中,谷歌用手势操作代替了最近应用按钮,「三大金刚按键」由此变成了两个。而现根据 XDA 的爆...
  • 原理:在main里监听最外层返回键,然后通讯原生,执行 moveTaskToBack(false) 回到手机桌面不退出app 安卓文件里 MainActivity.java import android.os.Bundle; import io.flutter.app.FlutterActivity; import io...
  • ROM介绍  【注意事项】 ... 4.4的ROM请不要删掉输入法,否者返回键、房子键等按键将会失效!  如果需要删除输入法,请在删除前安装其他输入法并设置为默认即可  关于电脑端提示ROOT问题:设置-开发者模式-
  •  4.4的ROM请不要删掉输入法,否者返回键、房子键等案件将会失效!  如果需要删除输入法,请先安装其他输入法并设置为默认之后再进行删除操作  连接USB模式开启方式:设置-开发者模式-USB调试勾选即可
  • 原理:在main里监听最外层返回键,然后通讯原生,执行 moveTaskToBack(false) 回到手机桌面不退出app 安卓文件里 MainActivity.java import android.os.Bundle; import io.flutter.app.FlutterActivity; import io....
  • 有时我们需要使用安卓实现在后台模拟系统按键,比如对音量进行调节(模拟音量键),关闭前台正在运行的App(模拟返回键),或者模拟触屏事件。但是对于原生安卓系统而言,后台进程关闭前台进程,甚至模拟用户事件,...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

安卓原生返回键