Issue
I'm coding an Android app and I want to make sure the wireless is connected before I invoke the browser to show a stream, however it Simply closes when the button is clicked saying that the application has stopped running. I have set the permission in the android manifest file. Here is my code. In a separate class called Networking I do this.
public class Networking extends Main {
public boolean isWirelessConnected()
{
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mwifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(mwifi == null)
return false;
else
return true;
}
public void messageDialog()
{
AlertDialog.Builder alrtBuild = new AlertDialog.Builder(this);
alrtBuild
.setTitle("Wireless")
.setMessage("You are not Connected would you like to Connect to wireless?")
.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
WifiManager wifiManger = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiManger.setWifiEnabled(true);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = alrtBuild.create();
alert.show();
}
}
And in the main class I have
Networking netwrk = new Networking();
if(netwrk.wireless().isConnected())
{
Intent brwoserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.own3d.tv/HotshotGG"));
startActivity(brwoserIntent);
}
Here Is the errors the program throws when I hit the button
12-08 19:51:16.904: E/AndroidRuntime(1549): FATAL EXCEPTION: main
12-08 19:51:16.904: E/AndroidRuntime(1549): java.lang.IllegalStateException: Could not execute method of the activity
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.view.View$1.onClick(View.java:3597)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.view.View.performClick(View.java:4202)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.view.View$PerformClick.run(View.java:17340)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.os.Handler.handleCallback(Handler.java:725)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.os.Handler.dispatchMessage(Handler.java:92)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.os.Looper.loop(Looper.java:137)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-08 19:51:16.904: E/AndroidRuntime(1549): at java.lang.reflect.Method.invokeNative(Native Method)
12-08 19:51:16.904: E/AndroidRuntime(1549): at java.lang.reflect.Method.invoke(Method.java:511)
12-08 19:51:16.904: E/AndroidRuntime(1549): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-08 19:51:16.904: E/AndroidRuntime(1549): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-08 19:51:16.904: E/AndroidRuntime(1549): at dalvik.system.NativeStart.main(Native Method)
12-08 19:51:16.904: E/AndroidRuntime(1549): Caused by: java.lang.reflect.InvocationTargetException
12-08 19:51:16.904: E/AndroidRuntime(1549): at java.lang.reflect.Method.invokeNative(Native Method)
12-08 19:51:16.904: E/AndroidRuntime(1549): at java.lang.reflect.Method.invoke(Method.java:511)
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.view.View$1.onClick(View.java:3592)
12-08 19:51:16.904: E/AndroidRuntime(1549): ... 11 more
12-08 19:51:16.904: E/AndroidRuntime(1549): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
12-08 19:51:16.904: E/AndroidRuntime(1549): at android.app.Activity.getSystemService(Activity.java:4463)
12-08 19:51:16.904: E/AndroidRuntime(1549): at nc.prog1415.Networking.isWirelessConnected(Networking.java:14)
12-08 19:51:16.904: E/AndroidRuntime(1549): at nc.prog1415.Main.hotshotBtns(Main.java:109)
12-08 19:51:16.904: E/AndroidRuntime(1549): ... 14 more
Solution
From the LogCat:
System services not available to Activities before
onCreate()
This error is rather self-explanatory, so change your code to this:
ConnectivityManager cm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
...
}
Addition
Your Networking extends Main, which I assume is an Activity. Since you don't want a full Activity for what you are doing you should take a different tactic. You should pass Networking a Context in your constructor instead:
public class Networking {
Context context;
public Networking(Context con) {
context = con;
}
public boolean isWirelessConnected()
{
cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mwifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(mwifi == null)
return false;
else
return mwifi.isConnectedOrConnecting();
}
// etc
}
Notice that I switched to context.getSystemService()
you'll need to do this while creating your dialog as well.
Now change the way you use this method:
Networking netwrk = new Networking(this);
if(netwrk.isWirelessConnected())
Answered By - Sam
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.