相关疑难解决方法(0)

如何检查是否启用了位置服务?

我正在Android OS上开发一款应用.我不知道如何检查是否启用了位置服务.

我需要一个方法,如果它们被启用则返回"true",否则返回"false"(所以在最后一种情况下我可以显示一个对话框来启用它们).

service android location

208
推荐指数
10
解决办法
22万
查看次数

如何判断"移动网络数据"是启用还是禁用(即使通过WiFi连接)?

我有一个应用程序,我希望能够用于从远程查询获取连接状态报告.

我想知道WiFi是否已连接,以及是否通过移动网络启用了数据访问.

如果WiFi超出范围,我想知道我是否可以依赖移动网络.

问题是当我通过WiFi连接时,启用的数据总是返回为真,并且我只能在未通过WiFi连接时正确查询移动网络.

我看到的所有答案建议轮询以查看当前的连接是什么,但我想知道我是否需要移动网络,即使我目前可能通过WiFi连接.

无论如何判断移动网络数据是否在没有轮询的情况下启用以查看是否已连接?

编辑

因此,当通过WiFi连接时如果我转到设置并取消选择"数据已启用",然后在我的应用程序中执行此操作:

 boolean mob_avail = 
 conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
Run Code Online (Sandbox Code Playgroud)

mob_avail返回为'true',但我已禁用移动网络数据,所以我希望它是'false'

如果我关闭WiFi,则(正确)没有连接,因为我已禁用移动网络数据.

那么当我通过WiFi连接时,如何检查移动网络数据是否已启用?

UPDATE

我按照ss1271的评论中的建议查看了getAllNetworkInfo()

我在以下3个条件下输出了有关移动网络的信息

WiFi关闭 - 移动数据

WiFi On - 移动数据关闭

WiFi On - 移动数据

并得到以下结果:

WiFi关闭:

mobile [HSUPA],state:CONNECTED/CONNECTED,reason:unknown,extra:internet,roaming:false,failover:false,isAvailable:true,featureId:-1,userDefault:false

WiFi On/Mobile OFF

NetworkInfo:type:mobile [HSUPA],state:DISCONNECTED/DISCONNECTED,reason:connectionDisabled,extra:(none),漫游:false,failover:false,isAvailable:true,featureId:-1,userDefault:false

WiFi On/Mobile On

NetworkInfo:type:mobile [HSPA],state:DISCONNECTED/DISCONNECTED,reason:connectionDisabled,extra:(none),漫游:false,failover:false,isAvailable:true,featureId:-1,userDefault:false

因此,您可以看到isAvailable每次都返回true,并且状态仅在WiFi处于影响状态时显示为Disconnected.

澄清

看,看看我的手机是目前移动网络连接.我AM试图建立用户是否已经启用了移动网络/禁用数据访问.他们可以通过转到设置 - >无线和网络设置 - >移动网络设置 - >数据启用来打开和关闭此功能

networking android network-connection

63
推荐指数
5
解决办法
8万
查看次数

更换SIM卡时的事件

如何在移动设备中更改SIM卡时访问事件?

android

15
推荐指数
3
解决办法
2万
查看次数

清单中的飞机模式接收器?

我正在开发一款Android应用程序,该应用程序将在工业环境中用作手持控制器.为了让平板电脑不太适合带回家,我打算一直尝试以编程方式打开飞机模式但是在4.2中已经弃用了,这也是我们用来安装Android Open Accessory的版本.但是我想如果我可以在清单中注册一个接收器,以便它可以在任何时候更改飞行模式时启动我的应用程序,然后检查它是否已关闭并提示用户重新打开它.

我尝试了以下解决方案,也找到了这个问题的答案.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name=".receiver.ConnectivityReceiver">
<intent-filter>
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

我也试过这段代码:

<receiver android:enabled="true" android:name=".ConnectivityReceiver">
<intent-filter>
    <action android:name="android.intent.action.SERVICE_STATE"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

在这里也被saxos发现为aswer .

现在这些解决方案都不会导致我的应用程序在飞行模式改变时启动.

是否可以在清单文件中注册BroadcaseReceiver for Airplane Mode并让该意图启动应用程序?

编辑1:我确实在java代码中使用了BroadcastReceiver,以便在我的应用程序处于活动状态时检测到这种情况.这不是我想要的.谢谢.

编辑2:这是我目前的整个清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.i2c"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="17" 
    android:maxSdkVersion="17"/>
    <!-- SDK 14 = 4.0 ICS
         SDK 17 = 4.2 JB -->             

<!-- Assures software is not loaded onto unsupported screen size, i.e. phones -->
<supports-screens android:xlargeScreens="true"
    android:largeScreens="true"
    android:normalScreens="false"
    android:smallScreens="false"
    android:anyDensity="true"/> …
Run Code Online (Sandbox Code Playgroud)

android airplane android-intent

4
推荐指数
2
解决办法
1万
查看次数

如何知道 BroadcastReceiver 中的飞行模式是打开还是关闭?

我在其他问题中看到了使用此解决方案的多个答案,以了解飞行模式是否更改:

IntentFilter intentFilter = new      
IntentFilter("android.intent.action.AIRPLANE_MODE_CHANGED");

BroadcastReceiver receiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
            Log.d("AirplaneMode", "Service state changed");
      }
};

context.registerReceiver(receiver, intentFilter);
Run Code Online (Sandbox Code Playgroud)

但现在我想知道 onReceive 方法中的飞行模式是否打开或关闭。

谢谢。

android broadcastreceiver android-intent android-broadcast

3
推荐指数
1
解决办法
8134
查看次数