当前位置: 首页 > 知识库问答 >
问题:

不幸的是,在检查网络时应用程序被停止

公孙俊弼
2023-03-14

我正在使用以下代码通过我的应用程序检查互联网连接。

public class ConnectionChangeReceiver extends BroadcastReceiver
{
  @Override
  public void onReceive( Context context, Intent intent )
  {
    ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService( Context.CONNECTIVITY_SERVICE );
    NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
    NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE );

    if (activeNetInfo != null)
    {
        Toast.makeText( context, "Active Network Type : " + 
                       activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
    }
    if(mobNetInfo != null)
    {
        Toast.makeText( context, "Mobile Network Type : " + 
                          mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
    }
  }
}

我已经在清单文件中定义了所需的权限。

每当我尝试使用F8键断开/连接网络时,我都会收到“不幸的是,应用程序已停止”,并且我在logcat中没有收到任何打印。

我能知道我犯了什么错误吗?

共有3个答案

钱澄邈
2023-03-14

针对Android 7.0(API级别24)及更高版本的应用程序如果在其清单中声明广播接收器,则不会接收此广播。如果应用程序向Context.register接收器()注册其BroadcastRecector,并且该上下文仍然有效,则应用程序仍将接收广播。

https://developer.android.google.cn/reference/android/net/ConnectivityManager.html?hl=zh-cn#连通性行动

陆飞鸿
2023-03-14

上述代码无法正常用于wi-fi连接。这是修改后的

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

androidmanifest.xml的内部应用程序标签

<receiver android:name="android.YOUR-JAVA-CLASS-PATH.BackgroundSync" android:enabled="true">
      <intent-filter>
          <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
      </intent-filter>
</receiver>

背景同步。JAVA

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager; 
import android.util.Log;
import android.widget.Toast;

public class BackgroundSync extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) { 
        ConnectivityManager cm =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (cm.getActiveNetworkInfo()!=null){
            Toast.makeText(context, "Connected to Internet", Toast.LENGTH_LONG).show();
        }
        else Log.i("INTERNET","---------------------> Internet Disconnected. ");
    }
}
南门星河
2023-03-14

注意:如果你的目标是Android N预览。以上接收器将无法按照谷歌的限制工作。

链接:https://developer.android.com/preview/features/background-optimization.html#connectivity-行动

使用: WorkManager或JobScheduler。

您是否已在AndroidManifest中添加了此项。xml?

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

如果您已添加了以上内容,请检查此代码:

<receiver android:name=".UpdateReceiver" >
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

public class UpdateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

          ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE );
          NetworkInfo activeNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
          boolean isConnected = activeNetInfo != null && activeNetInfo.isConnectedOrConnecting();   
          if (isConnected)       
              Log.i("NET", "Connected" + isConnected);   
          else 
              Log.i("NET", "Not Connected" + isConnected);
    }
}
 类似资料:
  • 我想在通知上打开我的MapsActive单击通知正常工作,但当我单击通知时,它会让我停止应用程序 通知活动。班 地图civity.class activity_map LogCat ethod.invokeActivityTcom.android.internal.os.LaunchActive(ActivityTaller.run)atnit.java:726ActivityTcom.andro

  • 这个想法是在警报开始时启动一个游戏。我在下面展示了manifest.xml。如果我犯了错误,请纠正我。因为我刚接触Android系统,所以我无法理解它。PS:我已经搜索了其他类似的问题,并纠正了许多其他错误,但问题仍然存在。 这是我从教程(AndroidTimeActivity)中获得的警报代码: 这是AlarmReceiver类:

  • 问题内容: 我是android应用程序开发的新手(仅从昨天开始我才开始学习android)。 我在AVD中收到消息,例如-不幸地已停止,请帮助我解决此错误,我想在android中学习更多信息,但被此错误所吸引.. plz..plz ..帮助我解决这个问题。 我的main.java是 } 我的main.xml是 和日志是 请解释为什么会这样。告诉我解决方案 问题答案: 您在第38行获得了NPE,即:

  • 每次我在手机上运行应用程序都会崩溃。有什么不对劲吗?它说不幸的是“appname”已经停止工作。我也尝试过其他方法来检查Google Play服务,但它总是崩溃。我更新了我的google play服务,让一个运行良好的google map v2完美运行。这个代码有什么解决方案吗?它在我运行android 4.1.2的手机和我的AVD上崩溃。

  • 我在Mac上的Eclipse中创建了一个新的Android应用程序项目。我设置了它Android4.4.2 sdk。 当我在物理Nexus 7平板电脑中安装此示例项目时,它会抛出以下启动错误。我尚未在此项目中添加任何内容,它只是一个按原样创建的示例项目。 不幸的是已经停止了 代码: Android智能.xml: 对于,值/styles.xml和值-v11/styles.xml和值-v14/styl

  • 我正试图将我的启动器活动更改为我刚刚使用twitter数字开发的身份验证活动,我已经在android和java代码中进行了必要的调整,但注意到每次尝试启动时应用程序都会崩溃,身份验证活动的名称是。在调试会话期间,我从android监视器控制台观察到,在com.close.close.aboutactivity.oncreate(aboutactivity.java:34)处蓝色突出显示的一行