当我尝试在Android Studio中渲染布局预览时出现错误:
不支持的major.minor版本52.0
我已经向Google报告了问题78084,因为该setMobileDataEnabled()方法不再可以通过反射调用.它可以通过反射从Android 2.1(API 7)到Android 4.4(API 19)进行调用,但是从Android L及更高版本开始,即使使用root,该setMobileDataEnabled()方法也不可调用.
官方回应是问题是"已关闭",状态设置为"WorkingAsIntended".谷歌的简单解释是:
私有API是私有的,因为它们不稳定,可能会在没有通知的情况下消失.
是的,谷歌,我们意识到使用反射调用隐藏方法的风险 - 甚至在Android出现之前 - 但是你需要提供一个更加可靠的答案,如果有的话,可以实现相同的结果setMobileDataEnabled().(如果您对Google的决定不满意,请登录问题78084,并尽可能多地将其加注,以便让Google知道他们的错误.)
所以,我的问题是:在Android设备上以编程方式启用或禁用移动网络功能时,我们是否处于死胡同?谷歌的这种严厉的方法在某种程度上并不适合我.如果您有Android 5.0(Lollipop)及其他方法的解决方法,我很乐意听到您在此主题中的回答/讨论.
我使用下面的代码来查看该setMobileDataEnabled()方法是否可用:
final Class<?> conmanClass = Class.forName(context.getSystemService(Context.CONNECTIVITY_SERVICE).getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(context.getSystemService(Context.CONNECTIVITY_SERVICE));
final Class<?> iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method[] methods = iConnectivityManagerClass.getDeclaredMethods();
for (final Method method : methods) {
if (method.toGenericString().contains("set")) {
Log.i("TESTING", "Method: " + method.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
更新:目前,如果设备已植根,则可以切换移动网络.但是,对于非根设备,它仍然是一个调查过程,因为没有通用的方法来切换移动网络.
如何将我的应用程序包推送到Android模拟器"/ system/app"文件夹?
我已经尝试过使用:
"adb push myApk.apk/system/app"
它给了我这个:
"failed to copy: ... No space left on device"
Run Code Online (Sandbox Code Playgroud)
虽然从设置 - > sdCard和手机存储,我获得了37Mb的内部可用空间.
这种需求的重点
与权限有关.
我需要拥有INSTALL_PACKAGES权限
,我知道通过将我的应用程序
放在/ system/app中,我获得了该权限.
我有一个基于Android的手机(2.3.6),具有未锁定的root权限.由于我想通过我的电脑访问我的手机,今天我已经安装了QtAdb和Android SDK.如果我打开命令提示符,我这样做
adb shell su
我明白了
#
所以我能够复制,删除,推送手机上的文件(在手机上我使用应用程序"SuperSU"收到通知.)
但是,如果我在Windows 7下启动QtAdb,我会收到以下错误:"adbd无法在生产版本中以root身份运行".我想念什么?QtAdb出了什么问题?
我尝试了stackoverflow和在线中可用的所有命令和建议,但没有一个起作用
还有很多,但对我没有用
我收到以下错误-以下命令均无效。
$adb root
$adb disable-verity
Run Code Online (Sandbox Code Playgroud)
对于
$adb remount
remount of / failed: Permission denied
remount failed
Run Code Online (Sandbox Code Playgroud)
所以然后我尝试了不同的命令
$ adb shell mount -o rw,remount /system
mount: '/system' not in /proc/mounts
$ adb shell mount -o rw,remount /
'/dev/root' is read-only
$ adb shell mount -o rw,remount -t /dev/block/stl12 system
mount: 'system' not in /proc/mounts
$ adb shell "su 0 mount -o rw,remount /system"
mount: '/system' not in /proc/mounts
$ adb shell
$ su
# mount -o rw,remount …Run Code Online (Sandbox Code Playgroud)