强制设置Android手机方向问题

这篇具有很好参考价值的文章主要介绍了强制设置Android手机方向问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用场景

        在某些情况下,没有对Android应用设置横屏竖屏,而Android手机一般随着陀螺仪加速器的方向进行旋转,假设我的手机是横向放置的,但是我又要求纵向显示。或者我的手机是纵向放置的,但是我又要求横向显示的时候,就会有挺麻烦的问题。

ADB方法

        使用adb指令强行修改方向还是很方便的,问题在于某些手机权限不支持。

        支持手机类型:小米,华为,VIVO,摩托罗拉,三星,魅族,一加(ACE除外)

        不支持手机类型:OPPO系列,Realme系列,一加ACE系列

       

//先执行这条指令来取消自动旋转
adb shell content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0

//旋转到横向:
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1

//旋转到纵向:
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0

执行成功后,可以很清楚地看到屏幕的方向变了,但是如果在不支持的手机类型执行失败时会报以下错误:

Error while accessing provider:settings
java.lang.SecurityException: com.android.shell was not granted  this permission: android.permission.WRITE_SETTINGS.
        at android.os.Parcel.createExceptionOrNull(Parcel.java:2389)
        at android.os.Parcel.createException(Parcel.java:2373)
        at android.os.Parcel.readException(Parcel.java:2356)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
        at android.content.ContentProviderProxy.insert(ContentProviderNative.java:550)
        at com.android.commands.content.Content$InsertCommand.onExecute(Content.java:565)
        at com.android.commands.content.Content$Command.execute(Content.java:521)
        at com.android.commands.content.Content.main(Content.java:727)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:419)
Caused by: android.os.RemoteException: Remote stack trace:
        at android.provider.Settings.isCallingPackageAllowedToPerformAppOpsProtectedOperation(Settings.java:15387)
        at android.provider.Settings.checkAndNoteWriteSettingsOperation(Settings.java:15267)
        at com.android.providers.settings.SettingsProvider.mutateSystemSetting(SettingsProvider.java:2053)
        at com.android.providers.settings.SettingsProvider.insertSystemSetting(SettingsProvider.java:1987)
        at com.android.providers.settings.SettingsProvider.insert(SettingsProvider.java:767)

主要的原因应该是手机厂商对系统权限进行了一定的限制,shell的权限级别不够修改setting,如果root了手机或者能够加上system权限的话就没这问题了。

代码方法

        一般来讲都是在应用中的xml文件或者java代码里面写好了方向,但是我如果要强行指定全局的方向而不只是一个应用的话,最好的方式还是使用app_process的方法,在android里面运行个java程序。具体的代码也很简单。

private final ServiceManager serviceManager = new ServiceManager();
//设置成横向 
serviceManager.getWindowManager().freezeRotation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

//设置成纵向
serviceManager.getWindowManager().freezeRotation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

该方法目前应该能够比较好地适配所有机型的。文章来源地址https://www.toymoban.com/news/detail-519008.html

到了这里,关于强制设置Android手机方向问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [RK3588 Android12]设置屏幕方向、分辨率和密度

    修改device/rockchip/common/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATIO参数值 在控制台输入 wm size 1920x1080 或 修改device/rockchip/rk3588/rk3588_s/rk3588_s.mk 增加PRODUCT_PROPERTY_OVERRIDES += ro.config.size_override参数值 在控制台输入 wm density 240 或 修改device/rockchip/rk3588/rk3588_s/rk3588_s.mk 修改PRODUCT_PROPERTY_OVERRI

    2024年02月15日
    浏览(60)
  • android设置竖屏仍然跟随屏幕旋转怎么办

    如题所问,我最近遇到一个bug,就是设置了摇感,然后有用户反馈说设置了手机下拉的系统设置-屏幕旋转-关闭。然后屏幕还是会旋转的问题。 首先,我们先从如何设置横竖屏了解下好了 设置横屏和竖屏的方法: 方法一:在AndroidManifest.xml中配置 如果不想让软件在横竖屏之间

    2024年02月13日
    浏览(104)
  • 在Android Studio通过adb命令强制安装debug版本apk到手机,且允许version code降级

    在Android Studio通过adb命令强制安装debug版本apk到手机,且允许version code降级 切换到Terminal: .appbuildintermediatesapkdebug是android studio的apk编译生成路径。 参数: -t   允许安装测试包 -d   运行version code 降级 -r   取代现有application -g  授予所有权限       adb命令导出手机已安

    2024年02月14日
    浏览(67)
  • Android中相机(Camera)画面旋转角度分析:手机摄像头的“正向”、手机画面自然方向、相机画面的偏转角度

    #.概述:     1.如同人眼看东西分上下一样,摄像头也有其“正向”,正常情况下,Android手机后置、前置摄像头的“正向”朝向为手机的“右侧”(默认如此,除非手机厂商修改设置)。 (这里运行代码做过测试发现,前置摄像头也是以右侧为正向,而不是有些资料上说的

    2024年02月14日
    浏览(81)
  • SwiftUI 中限制任意视图为指定的屏幕旋转方向

    在 SwiftUI 开发中,我们有时需要限制 App 中某些视图为特定的屏幕旋转方向,而另一些视图不做限制(或做其它限制),这可以做到吗? 如上图所示:我们成功的限制了 SwiftUI 中不同视图对应于不同的屏幕旋转方向(Interface Orientations)。

    2024年02月11日
    浏览(43)
  • 解决:小米手机设置全屏后屏幕上方有黑条问题

    在红米 K30 上发现设置全屏后,手机屏幕上方全面屏摄像头部分有黑条,无法实现全屏幕。 属性说明: LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT:全屏窗口不使用到刘海区域,非全屏窗口可正常使用刘海区 LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER:窗口不允许和刘海屏重叠 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHO

    2024年02月11日
    浏览(66)
  • [1159]adb判断手机屏幕状态并点亮屏幕

    唤醒屏幕操作 解锁屏幕 关闭和开启屏幕样例 重新启动手机app 以上操作需要adb环境已经搭建好,使用以下命令查看连接设备 想获取某个APP名称用于启动时,手机先打开APP,然后执行以下命令 参考:https://www.cnblogs.com/Kirito-Asuna-Yoyi/p/Python-ADB1.html https://blog.csdn.net/weixin_40895135/

    2024年02月11日
    浏览(87)
  • adb控制手机屏幕滑动

    前言: 这个用的是小米手机,在“开发者选项中”把 “USB调试”和**“USB调试(安全设置**)”两个都打开, 也可以把 指针位置 打开 来看触控点在屏幕的坐标: 2 adb 划动相册 其中 1.choice /t 1 /d y /n nul 的1 是1秒钟滑动一次 2.adb shell input swipe 350 1000 850 1000 200 350 1000 850 1000 2

    2024年02月13日
    浏览(45)
  • python ADB 手机屏幕 控制脚本 刷粉 刷赞 脚本

    本系列专栏见:高质量文章导航_GZVIMMY的博客 Python大家都很熟悉,人生苦短,我用Python。 ADB(Android Debug Bridge)则是一种通过电脑调试控制安卓设备的技术,我可以在电脑上输入指令,达到和手工操作一样的效果(比如说我可以用电脑控制安卓手机点开某个应用,点击某个按

    2024年02月10日
    浏览(51)
  • 华为屏幕锁如何解除强制恢复出厂解开华为手机忘记的密码线刷解决方法

     华为手机密码忘记学会自己解锁教会你恢复出厂后没法激活了华为手机有没有办法刷机,进入系统?手机设备提示已锁,需要解锁。怎么操作华为手机恢复出厂设置后忘记密码,怎么办怎么注销.怎么删除更换重置.关联号解绑方法教程华为手机获取(绕开激活手机华为解锁帐

    2024年02月09日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包