除非他们连接了Wi-Fi,否则我不希望我的用户甚至尝试下载某些内容.但是,我似乎只能判断是否启用了Wi-Fi,但他们仍然可以拥有3G连接.
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
return false;
}
Run Code Online (Sandbox Code Playgroud)
然而,国家不是我所期望的.即使连接了Wi-Fi,我也会OBTAINING_IPADDR
成为状态.
我正在开发一个用于检查互联网连接的Android广播接收器.
问题是我的广播接收器被调用了两次.我希望它只在网络可用时才被调用.如果它不可用,我不希望得到通知.
这是广播接收器
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
// Do something
Log.d("Network Available ", "Flag No 1");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcastreceiverforinternetconnection"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" …
Run Code Online (Sandbox Code Playgroud) java android broadcastreceiver android-networking android-wifi
我需要检测何时通过WIFI进行网络连接.发送什么广播以确定已建立有效的网络连接.我需要验证HTTP的有效网络连接是否存在.我应该注意什么以及我需要做些什么其他测试才能知道存在有效连接.
我需要检测何时与特定WIFI网络建立网络连接.
例如:一旦你走进你的房子,你的手机拿起你的家庭WiFi网络,我想要一条通知说"你不在你的家庭网络,你想连接到你家吗?" 但我希望这只会发生在我特定的房子里.
我应该注意什么,我应该做些什么测试来确保它是我的特定家庭网络,而不是另一个网络?
我有一个活动,它需要响应广播事件.由于活动不能同时成为广播接收者,我制作了一个广播接收器.
我的问题是:如何通过广播接收器通知活动?我相信这是一种常见的情况,那么有这样的设计模式吗?
我的应用程序中有一个广播接收器,每次用户接到来电时都会被触发.现在,当它发生时,我需要广播接收器来调用特定活动中的特定方法.现在,我尝试将此方法设置为静态,因此可用,但有些东西告诉我这是一个非常糟糕的主意.
因此,我尝试在我的活动中实例化广播接收器而不在我的清单中声明它但问题是 - 当应用程序关闭时,活动不存在,因此我无法调用我的方法.
所以我的问题是 - 当广播接收器被激发时,如何在不使其成为"公共静态"的情况下调用此方法?
这是我的活动代码(我删除了不相关的部分)
package com.silverfix.ringo.activities;
import com.silverfix.ringo.R;
import com.silverfix.ringo.activities.fragments.DataManagerFragment;
import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class RingtonesActivity extends Activity{
private DataManagerFragment dataManagerFragment;
private IntentFilter filter;
private BroadcastReceiver phoneCall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ringtones);
ActionBar ab = getActionBar();
ab.setDisplayShowTitleEnabled(false);
ab.setDisplayHomeAsUpEnabled(true);
dataManagerFragment = new DataManagerFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(dataManagerFragment, "DataManagerFragment");
ft.commit();
filter = new IntentFilter();
filter.addAction("android.intent.action.PHONE_STATE");
phoneCall = new BroadcastReceiver() {
@Override
public void …
Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式将我的设备连接到例如我的耳机上...我有KitKat
版本并且所有工作Bluetooth
都很完美(总是自动连接没有问题)但是因为我已更新到Lolipop
它没有.我想知道是否有任何方法可以将我的任何配对设备连接Android phone
到Bluetooth
打开状态.
从现在开始我已经有了这个代码(获取设备名称和设备地址),因为我想它可以连接做类似device.connect(MAC-Address);
但不起作用的东西......
BluetoothAdapter bluetoothAdapter
= BluetoothAdapter.getDefaultAdapter();
Set < BluetoothDevice > pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device: pairedDevices) {
mDeviceName.add(device.getName());
mDeviceMAC.add(device.getAddress());
}
}
bluetoothClass.setDeviceName(mDeviceName);
bluetoothClass.setDeviceMac(mDeviceMAC);
Run Code Online (Sandbox Code Playgroud)
在我的MotoG(KitKat)上,如果我转动Bluetooth
它,它会自动连接到设备(如果它接近并配对...)但是在我的LG G3上我必须转到配置/蓝牙/配对设备/然后点击设备进行连接. ..我想避免这种情况......应该可以吗?
我想知道是否有可能连接到特定的蓝牙只是添加Device name
或Device MAC
...或多或少像Android
当我点击我的设备连接它自动连接...我只想得到那个CLICK事件.我知道Android
应该自动连接到配对的设备,但是有任何异常都没有...唯一的方法是配对它正在点击...这就是为什么我想知道它是否有办法做到这一点......我已经阅读并测试了kcoppock的答案,但它仍然无法正常工作..
有什么建议吗?
我想要做的主要是自动连接,Bluetooth
但是因为我读过嘿你回答...我想出来了,我知道这是一个Android
错误,所以我想要做的是选择paired devices
和然后单击我要连接的设备(不做任何操作Intent
)并连接它,而不是去Configuration/Bluetooth/...
.顺便说一下,我已经阅读了任何答案StackOverflow …