相关疑难解决方法(0)

如何检查Android上的互联网访问?InetAddress永远不会超时

我有一个AsyncTask应该检查网络访问主机名.但是doInBackground()永远不会超时.有人有线索吗?

public class HostAvailabilityTask extends AsyncTask<String, Void, Boolean> {

    private Main main;

    public HostAvailabilityTask(Main main) {
        this.main = main;
    }

    protected Boolean doInBackground(String... params) {
        Main.Log("doInBackground() isHostAvailable():"+params[0]);

        try {
            return InetAddress.getByName(params[0]).isReachable(30); 
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;       
    }

    protected void onPostExecute(Boolean... result) {
        Main.Log("onPostExecute()");

        if(result[0] == false) {
            main.setContentView(R.layout.splash);
            return;
        }

        main.continueAfterHostCheck();
    }   
}
Run Code Online (Sandbox Code Playgroud)

networking android asynchronous

637
推荐指数
27
解决办法
45万
查看次数

在Android应用程序中检查互联网连接的广播接收器

我正在开发一个用于检查互联网连接的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

228
推荐指数
12
解决办法
25万
查看次数

如何检查当前的互联网连接是否可用于android

我也想离线执行我的应用程序,所以我需要检查当前是否有可用的互联网连接.任何人都可以告诉我如何在Android中检查互联网是否可用?提供示例代码.我尝试使用下面的代码并使用模拟器进行检查,但它无法正常工作

public  boolean isInternetConnection() 
{ 

    ConnectivityManager connectivityManager =  (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting(); 
} 
Run Code Online (Sandbox Code Playgroud)

谢谢

android internet-connection

35
推荐指数
9
解决办法
9万
查看次数

电池省电+电话呼叫意图=>没有互联网?

注意:事实证明,原始问题在其假设中是不正确的.在底部查看有关其编辑的更多详细信息.

它现在关于电池节电器,而不是电池节电和打盹模式.它也不是关于Service&BroadcastReceiver,而是仅仅是BroadcastReceiver.

背景

从Android Lollipop开始,Google推出了新的,手动和自动的方式来帮助节省电池:

"打盹"模式和"电池节电器".

在某些情况下,由于这些技术,应用程序可能无法访问Internet.

问题

我在一个应用程序上工作,该应用程序需要使用在特定情况下触发的后台服务来访问Internet,如果收到重要内容,则会显示一些UI.

作为用户,我注意到在某些情况下,它无法访问Internet.

检查应用程序是否可以访问Internet是这样的:

public static boolean isInternetOn(Context context) {
    final NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
    return !(info == null || !info.isConnectedOrConnecting());
}
Run Code Online (Sandbox Code Playgroud)

问题是我需要检查为什么这有时会返回false,所以如果它失败了,我们应该告诉用户(可能通过通知)无法访问数据,因为设备限制了应用程序,并提供给用户从电池优化中列出应用程序.

我不确定哪些影响这个:打盹,节电或两者兼而有之,如果总是这样,对于所有设备,在所有情况下.

我试过的

我找到的是如何查询打盹模式和省电模式(省电模式):

public class PowerSaverHelper {
    public enum PowerSaveState {
        ON, OFF, ERROR_GETTING_STATE, IRRELEVANT_OLD_ANDROID_API
    }

    public enum WhiteListedInBatteryOptimizations {
        WHITE_LISTED, NOT_WHITE_LISTED, ERROR_GETTING_STATE, IRRELEVANT_OLD_ANDROID_API
    }

    public enum DozeState {
        NORMAL_INTERACTIVE, DOZE_TURNED_ON_IDLE, NORMAL_NON_INTERACTIVE, ERROR_GETTING_STATE, IRRELEVANT_OLD_ANDROID_API
    }

    @NonNull
    public static DozeState getDozeState(@NonNull Context context) {
        if (VERSION.SDK_INT < VERSION_CODES.M)
            return DozeState.IRRELEVANT_OLD_ANDROID_API; …
Run Code Online (Sandbox Code Playgroud)

android internet-connection battery-saver android-doze

27
推荐指数
1
解决办法
1724
查看次数

如何检查Android设备是否连接到网络?

我怎么知道我的设备是否连接到网络?我如何检测连接?任何示例代码?

android

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

在API级别28中不推荐使用activeNetworkInfo.type

在此处输入图片说明我想使用提供方法activeNetworkInfo.type的连接管理器来检查Android中的网络类型。此方法在API级别28中已弃用。因此在API 28中检查网络类型的解决方案是什么。我的代码是:

/**
 * Check Wi Fi connectivity
 */
fun isWiFiConnected(context: Context): Boolean {
    val connManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    return connManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI
}
Run Code Online (Sandbox Code Playgroud)

我的摇篮就像:

compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
    }
Run Code Online (Sandbox Code Playgroud)

android deprecated kotlin

15
推荐指数
6
解决办法
6416
查看次数

打开互联网连接时打开Android应用程序,否则显示没有互联网连接消息

我刚创建了一个用于从网站获取数据的Android应用程序.我想检查设备是否有互联网连接.如果设备具有互联网连接,请运行我的代码并获取数据并显示它,否则如果设备没有互联网,则显示无互联网连接消息.我试过这段代码来检查互联网连接.如果有互联网连接,我该如何调用代码?

我的Java代码:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_primary);
        new FetchWebsiteData().execute();        
            }
        });

    }

    private class FetchWebsiteData extends AsyncTask<Void, Void, String[]> {
        String websiteTitle, websiteDescription,websiteDescription1,websiteDescription2,websiteDescription3,listValue,listValue1;
        ProgressDialog progress;
        private Context context;

        //check Internet connection.
        private void checkInternetConnection(){

            ConnectivityManager check = (ConnectivityManager) this.context.
                    getSystemService(Context.CONNECTIVITY_SERVICE);
            if (check != null)
            {
                NetworkInfo[] info = check.getAllNetworkInfo();
                if (info != null)
                    for (int i = 0; i <info.length; i++)
                        if (info[i].getState() == NetworkInfo.State.CONNECTED)
                        {
                            Toast.makeText(context, "Internet is connected",
                                    Toast.LENGTH_SHORT).show();

                        }

            }
            else{
                Toast.makeText(context, "not conencted …
Run Code Online (Sandbox Code Playgroud)

java connection android android-listview

8
推荐指数
1
解决办法
5069
查看次数

如何在移动设备中检查WIFI和3G(数据计划)中的网络连接启用或禁用?

我正在开发一个Android应用程序,在我的申请,我要检查网络连接,比如我要检查在WiFi和3G网络连接(如印度人大多喜欢在移动数据计划),如何检查网络WiFi和3G.naybody我知道,请对此有所了解.

谢谢

android

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

来自android设备的Webservice调用无效,在模拟器上运行良好

我几个月前开发了一些Android应用程序项目,它包括,

  • GCM功能
  • Web服务电话

当时它运行良好.昨天我尝试在真实设备上运行它,我发现它无法进行任何Web服务调用.我在模拟器上期待同样的东西.但令我惊讶的是它在模拟器上运行良好 .....


我在真实设备上获得的异常是:ConnectionTimeOutException.


我想知道摆脱这个问题出了什么问题.我不确定我应该发布什么更多的信息.请问你是否要我发布一些东西

编辑:

AsyncTask<Void, Void, Boolean> gettingHttpOTP = new AsyncTask<Void, Void,Boolean>(){
HttpResponse httpresponse;
HttpClient client ;
JSONObject objSendjson;
HttpPost post ;
HttpEntity entity;
String result;
JSONObject objRetrievejson;

@Override
protected Boolean doInBackground(Void... arg0) {
client = new DefaultHttpClient();

HttpConnectionParams.setConnectionTimeout(client.getParams(), 50000);

objSendjson = new JSONObject();

 try
 {
    post = new HttpPost(Configurations.API_VERIFY_END_USER);


    objSendjson.put("Mobile_Number", gCountryCodeAndMobileNumber);
    objSendjson.put("Signature_Key", Configurations.SIGNATUREKEY);
    post.setHeader("Content-type", "application/json");
    post.setEntity(new StringEntity(objSendjson.toString(), "UTF-8"));
    httpresponse = client.execute(post);
    entity = httpresponse.getEntity();
     gHttpResponseCode=httpresponse .getStatusLine().getStatusCode();

     if(gHttpResponseCode==200)
     { …
Run Code Online (Sandbox Code Playgroud)

android web-services

7
推荐指数
1
解决办法
3620
查看次数

检查网络和Internet连接 - Android

我想知道下面的方法是否检查我是否都连接到网络,并且实际上也可以连接到互联网.

不只是连接到不允许我访问互联网的网络?

public boolean isNetworkAvailable() {
    ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();

    boolean isAvailable = false;
    if (networkInfo != null && networkInfo.isConnected()) {
        isAvailable = true;
    }
    return isAvailable;
}
Run Code Online (Sandbox Code Playgroud)

我想,确实如此,但我不是百分百肯定.

谢谢

java android android-internet

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

测试互联网连接Android

希望我能做一个测试来验证互联网连接,我不想检查网络状态,因为它只检测我是否在我的设备上激活了互联网,y yo quiero revisar si es posible conectarse a internet.像ping一样的东西.

networking android

5
推荐指数
1
解决办法
8166
查看次数

检查在线状态android

我正在使用此代码检查设备是否在应用程序加载时处于联机状态.

public boolean isOnline() 
{
    ConnectivityManager connMgr = (ConnectivityManager) 
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    return (networkInfo != null && networkInfo.isConnected());
}  
Run Code Online (Sandbox Code Playgroud)

但即使它已关闭计算机Wifi进行测试,这总是会返回true.这个功能只是测试连接或实际连接的能力吗?

谢谢!

android

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

android Connectivity_Change broadcastreceiver没有得到一致的调用

我正在尝试测试/实现丢失的网络用例.我有下面提到的代码.

我在Galaxy S6上运行它.我同时启用了移动数据和WiFi.

要禁用网络,我打开"飞行模式"

我的问题是:

如果我从android studio重新启动应用程序,我会被ConnectionChangeReceiver.onReceive()调用.但是,在几次打开/关闭飞行模式后,我没有被onReceive()打电话.

我在工作室设置断点来检查它是否被调用.

我错过了什么吗?

public class ConnectionChangeReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive( Context context, Intent intent )
    {
        // get Connectivity Manager object to check connection
        ConnectivityManager connectivityManager =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

        // Check for network connections
        if ( activeNetInfo != null && activeNetInfo.isConnected()) {
            Intent newintent = new Intent(BroadcastedIntentFilters.INTERNET_CONNECTED);
            LocalBroadcastManager.getInstance(context).sendBroadcast(newintent);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在清单文件中

    <receiver
        android:name=".Network.ConnectionChangeReceiver"
        android:exported="true"
        android:label="NetworkConnection" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.STATE_CHANGE"/>
        </intent-filter>
    </receiver> …
Run Code Online (Sandbox Code Playgroud)

android

0
推荐指数
1
解决办法
1284
查看次数