- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在装有 Android 4.2.2 的 Nexus 4 中设置飞行模式。我知道这是不可能的,因为 AIRPLANE_MODE_ON 已移至 Global system settings它只是一个阅读选项。
有没有其他方法可以做类似的事情,我的意思是禁用 radio ?我可以禁用蓝牙、wifi 和互联网连接,但电话网络仍然有效。
可以用 NDK 创建一个库完全禁用网络?
编辑:我试过 java.lang.reflect
制作此方法:
@SuppressLint("NewApi")
@SuppressWarnings("rawtypes")
private boolean putStringAirplaneMode() throws ClassNotFoundException,
NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException {
ContentResolver resolver = context.getContentResolver();
String name = Settings.Global.AIRPLANE_MODE_ON;
String value = (isEnabled() ? "1" : "0");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Log.v("AirplaneBatterySaver",
"Using reflection to change airplane mode");
// For JELLY_BEAN_MR1 use reflection. TODO test if works reflection
Class SystemProperties = android.provider.Settings.Global.class;
Class[] parameterTypes = new Class[3];
parameterTypes[0] = ContentResolver.class;
parameterTypes[1] = String.class;
parameterTypes[2] = String.class;
@SuppressWarnings("unchecked")
Method method = SystemProperties.getMethod("putString",
parameterTypes);
method.setAccessible(true);
return (Boolean) method.invoke(new Object(), resolver, name, value);
// return Settings.Global.putString(resolver, name, value);
} else {
Log.v("AirplaneBatterySaver",
"Using Settings.System to change airplane mode");
return Settings.System.putString(resolver, name, value);
}
}
如您所见,我替换了方法 Settings.System.putString(resolver, name, value);
在 JELLY_BEAN_MR1
但是,当然,我得到一个 SecurityException
因为我的应用不是系统应用。这是痕迹:
Caused by: java.lang.SecurityException: Permission denial: writing to secure
settings requires android.permission.WRITE_SECURE_SETTINGS
at android.os.Parcel.readException(Parcel.java:1425)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:574)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:777)
at android.provider.Settings$Global.putStringForUser(Settings.java:5421)
at android.provider.Settings$Global.putString(Settings.java:5411)
如果我使用 <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
我收到错误 Permission is only granted to system apps
.我正在检查 SDK 源代码(在跟踪文件中)以尝试找到一种无需此权限即可设置飞行模式的方法,但我没有取得任何成功。
最佳答案
从 4.2.2 开始,您无法切换飞行模式,因为它是只读的。
您有两个选择。
系统
应用程序。即根手机,将您的 APK 推送到 /system/app
并从那里安装。这将使您能够切换飞行模式。Reflection
获取切换飞行模式的 Android 系统函数调用。您应该获得有关如何使用反射获取公开 API 的代码示例,否则不会通过 SDK 向开发人员公开。
关于android - Jelly Bean 中的飞行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158265/
我想满足在 Jelly Bean 版本及以下版本以及 Jelly Bean 以上版本上运行的设备。 我的方法应该根据应用程序 ID 获取所有应用程序的应用程序使用情况/流量。请注意这行 rx = Lo
我正在使用 Maven 3 开发 Jenkins 插件,看到两个默认的 .jelly 文件:global.jelly 和 config.jelly。两者之间有什么区别,您能举例说明每个文件中的内容吗?
我在hudson中使用email-ext-plugin生成报告,查看$HUDSON_ROOM\plugins\email-ext\WEB-INF\classes\hudson\plugins\emai
我有一个简单的问题。在jenkins中,当为gui制作jelly配置文件时,您可以有一个单选按钮展开并显示更多元素,这也可以通过下拉列表来完成吗?如果是这样,有人有例子吗?我知道如何使用单选按钮来完成
我想打印数组中的元素,使用 foreach 循环给出错误 "元素 j:foreach 的前缀 j 未绑定(bind)" . 下面是我写的代码: Jello World var word
我在我的应用程序中集成了通知,我已经处理了 2 个案例:使用 NotificationCompat.Builder 的 Pre Jelly bean 通知,以及使用生成器发布 Jelly bean 通
我正在尝试在我的通知中实现媒体播放器控件。我需要播放/暂停按钮在“播放”可绘制对象和“暂停”可绘制对象之间动态切换(基本上取决于用户的触摸)。例如,一旦用户触摸“暂停”按钮,它需要更改为“播放”。当用
我尝试创建一个向左动画的按钮,然后再次向右返回到正常状态。动画不适用于此代码: .fortnite-wrapper .btn.btn-display:after { content: ""; disp
是否可以在 Jelly 中动态更新文本框的值? 我有一个下拉框,其选项是根据表单中以前的数据确定的。使用在线可用的文档可以轻松实现这一点(只需使用描述符中的 doFill...Items() 方法)。
我正在尝试在装有 Android 4.2.2 的 Nexus 4 中设置飞行模式。我知道这是不可能的,因为 AIRPLANE_MODE_ON 已移至 Global system settings它只是
以下代码不适用于 Jelly Bean (Android 4.1): final ComponentName cn = new ComponentName("com.android.phone","c
我正在使用WebView以便在我的Android应用中播放YouTube视频。 它工作正常,但我似乎对Jelly Bean存有疑问(也许还不知道更高版本)。 第一次播放视频时,它可以正常播放,但是当我
This widget is no longer supported. Other horizontally scrolling widgets include HorizontalScrollVie
文本框 文本区域 但是 clazz="required" 不适用于 textarea,我是否缺少另一个与 clazz req
我正在为我公司的一些自定义报告创建一个构建后插件。我从此处提供的 Jenkins“hello world”示例开始: https://wiki.jenkins-ci.org/display/JENKI
我正在尝试构建一个Jenkins Post构建插件,我必须在其中处理JSON文件(包含测试结果)并以表格格式显示它执行构建后,Jenkins 中的 code> 。 以下是到目前为止已完成的步骤: 创建
自从我的华硕 Transformer 平板电脑升级到 Jelly Bean 后,我发现应用程序和小部件的卸载有时非常缓慢,需要几分钟而不是几秒钟。这可能是有原因的吗? 我在 Stackoverflow
我正在进行一项 Activity ,我必须向用户显示 Toast 消息。操作系统版本是 Jelly Bean,显示通知已打开。这适用于 Ice Cream Sandwich 。这是代码: Toast.
在最新版本 Jelly Bean 之前,我的 android webview 应用程序从未出现过滚动问题。滚动不再足够流畅,也没有加速。有什么想法吗? 最佳答案 我尝试使用硬件加速,但没有解决这个问题
正在关注 my previous notification problems我想测试 Jelly Bean 4.1 中描述的新通知堆栈功能 here .我已经发现,通知需要有不同的 ID,否则旧通知只
我是一名优秀的程序员,十分优秀!