我的应用程序中有代码可以检测Wi-Fi是否已主动连接.如果启用了飞行模式,该代码会触发RuntimeException.无论如何,我想在此模式下显示单独的错误消息.如何可靠地检测Android设备是否处于飞行模式?
有没有办法在Android 4.2上禁用或启用飞行模式?
我使用的代码仅适用于以前的Android版本:
android.provider.Settings.System.putInt(
c.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
Run Code Online (Sandbox Code Playgroud) 我犯了错误吗?它不起作用.
public void airplane() {
boolean isEnabled = Settings.System.getInt(this.getApplicationContext().getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;
Settings.System.putInt(context.getContentResolver(),Settings.System.AIRPLANE_MODE_ON,isEnabled ? 0 : 1);
//Settings.System.putInt(this.getApplicationContext().getContentResolver(),Settings.System.AIRPLANE_MODE_ON,isEnabled ? 0 : 1);
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
}
Run Code Online (Sandbox Code Playgroud) 嗨,
我想检查是否打开飞机模式..如何检查?
谢谢+如何检查用户是否正在使用WIFI或GPRS或EDGE.如何区分?
我想以编程方式在iOS中开/关飞机模式.谷歌搜索后,我得到了一些以下链接,并跟着他们,
以上所有链接,告诉我使用AppSupport.framework并使用RadiosPreferences.h.这给了我关于airPlane模式是打开还是关闭的状态,但它并没有让我改变飞机模式.
然后我看到,这个链接,如何在IOS 5.1中使用私有API打开/关闭飞行模式,这为我提供了切换飞机模式的方法,但它正在使用权利,这只适用于越狱设备.有没有办法,以编程方式设置飞行模式(可以使用私有API,但不能使用权利).
众所周知,在Android 4.2上,只有系统应用程序可以切换飞行模式.但我认为它必须适用于root设备.我希望在我的Build.VERSION.SDK_INT> = 17的root设备应用程序中实现它.如何在Android 4.2的root设备上切换飞行模式?
手机有很多呼叫阻止应用,比如NQ Call Blocker.但在这些应用程序中,如果我们在黑名单中添加一个号码,呼叫者将听到"忙音".呼叫者也可以听到"振铃音"一小会儿.这意味着,看起来我们有意拒绝了这个电话.
现在,我正在尝试的是,开发一个呼叫阻止应用程序,它可以发送"Not Reachable Tone",而不是"Busy Tone"......
例如,从另一个号码拨打您的手机,当它响铃时,尝试将您的模式更改为"飞行模式".你会听到"Not Reachable Tone".[可能在某些Android设备中,长按电源按钮,并在您的手机响铃时激活"飞行模式".]
我创建了一个简单的广播接收器,它工作得很好,除非我打开/关闭空中飞机模式,使用onReceive方法接收广播消息需要将近2分钟.另一件事是,如果我们启动应用程序然后如果我更改Air plane模式(开/关),则会导致问题,然后接收消息需要很长时间.
如果在启动应用程序之前有模式更改,则不会影响在onReceive方法中接收消息的时间.
源代码如下.
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcastreceiver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.broadcastreceiver.BroadcastReceiverActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="MyBroadcastReceiver" >
<intent-filter>
<action android:name="test.intent.action.QR_CODE_RECEIVER" />
</intent-filter>
</receiver>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
BroadcastReceiverActivity.java
public class BroadcastReceiverActivity extends Activity {
public static String qrCodeReceiver = "test.intent.action.QR_CODE_RECEIVER";
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button broadcastBtn = (Button) findViewById(R.id.broadcastBtn);
broadcastBtn.setOnClickListener(new View.onClickListener(){
public void onClick(View v){
//TODO …
Run Code Online (Sandbox Code Playgroud) 当用户将设备置于飞行模式时,Apple Reachability示例代码中的Reachability类似乎会严重延迟.我看到用户进入飞机模式和实际通知之间大约有5秒的差距.
有更快的方式获得通知吗?或者这个操作系统的新方法?
我需要我的应用程序来重置设备的移动网络信号。这与切换飞行模式的效果相同,其中连接暂时丢失,重新连接时分配新的 IP 地址,状态栏中的 LTE/信号图标应消失,然后在重新连接时重新出现。我在 Play 商店上找到了一个应用程序,我在运行 Android 4.4.4 和 CyanogenMod 的手机上测试了该应用程序,它确实做到了这一点,但我不确定如何在我自己的应用程序中实现这一点。我认为这与CHANGE_NETWORK_STATE
许可有关。我正在寻找文档或一些简单的示例代码来重置网络连接。
请注意,我并不是专门尝试切换飞行模式,而是按照上面链接的应用程序的方式重置移动数据,因为我已经测试过它确实可以工作,甚至不需要 root 权限。
airplane ×10
android ×7
ios ×2
iphone ×2
java ×2
callblocking ×1
frameworks ×1
ios8 ×1
mobile ×1
mode ×1
reachability ×1
root ×1