我真的是android上的新手,并且正在开发一个需要检查设备是否已连接到互联网的应用程序。这是我不断得到的错误。
java.lang.IllegalStateException:系统服务不可用于 android.app.Activity.getSystemService上onCreate()之前的活动
public class Fragment_Home extends Fragment implements Class_Home_Adapter.OnItemClickListener {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_home, container, false);
readJsonFile();
return v;
}
private void readJsonFile() {
Class_Check_Internet_Connection class_check_internet_connection = new Class_Check_Internet_Connection();
Log.e(TAG, "Internet Status: " + class_check_internet_connection.internetStatus());
}
这是我用来检查互联网连接的课程
public class Class_Check_Internet_Connection extends Activity {
public static boolean isNetworkAvailable(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if ((activeNetworkInfo != null)&&(activeNetworkInfo.isConnected())){
return true;
}else{
return false;
}
}
public boolean internetStatus() {
boolean isNetworkAvailable = Class_Check_Internet_Connection.isNetworkAvailable(this);
return isNetworkAvailable;
}
}
答案 0 :(得分:1)
没有理由在您的Class_Check_Internet_Connection
类中“扩展活动”。看来您正在课堂上扩展Activity
-可能试图强制创建Context
。 Context
是通过onCreate()
方法创建的。但是,由于没有Context
方法,因此您正在“绕过” onCreate()
的创建...所以这是空的!
但是您不需要创建Context
-您也不应该。您不应为此课程扩展Activity
!而是将Context
作为参数传递给类。
// Snake case is generally not used with Jave, but I will leave it...
public class Class_Check_Internet_Connection {
Context mContext = null;
public Class_Check_Internet_Connection(Context context){
this.mContext = context;
}
public static boolean isNetworkAvailable(){
ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if ((activeNetworkInfo != null)&&(activeNetworkInfo.isConnected())){
return true;
}else{
return false;
}
}
// another public (!) method to simply query isNetworkAvailable?? If you think you need it....
public boolean internetStatus() {
boolean isNetworkAvailable = Class_Check_Internet_Connection.isNetworkAvailable();
return isNetworkAvailable;
}
}
// Strange name for a method that checks the internet connectivity!!
private void readJsonFile() {
Class_Check_Internet_Connection class_check_internet_connection = new Class_Check_Internet_Connection(this);
Log.e(TAG, "Internet Status: " + class_check_internet_connection.internetStatus());
}
注意:
我没有检查您的代码以查看其是否正常运行。我只是在解决您收到的错误。