当前位置: 首页 > 工具软件 > Jelly > 使用案例 >

android+飞行模式+收音机,Jelly Bean中的飞行模式

计阳泽
2023-12-01

我正尝试在Android 4.2.2中设置Nexus 4中的飞行模式。 我知道这是不可能的,因为AIRPLANE_MODE_ON被移动到Global system settings,它只是一个读取选项。Jelly Bean中的飞行模式

是否有任何其他方式来做类似的事情,我的意思是禁用收音机?我可以禁用蓝牙,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)

如果我使用我得到的错误Permission is only granted to system apps。我正在检查SDK源(在跟踪文件中)试图找到一种方法来设置没有此权限的飞行模式,但我没有取得任何成功。

2013-04-22

Freefri

+0

你会发现这个问题的答案已经在这个网站!尝试搜索“4.2飞行模式”。基本上,它不再可能将此设置从4.2更改为,除非您的应用程序具有根目录(有解释如何执行此操作的答案)。 –

2013-04-22 23:20:31

+0

感谢您的回答。我实际上并没有在寻找如何改变这个设置(飞行模式),无论如何,我在Stackoverflow中更努力地搜索。我正在寻找如何以不同的方式做类似的事情(如果可能的话)。对于我的应用程序,使用root权限不是一个选项。 –

2013-04-22 23:31:34

 类似资料: