简体   繁体   中英

Android app making 2.2 version but not compatible for 2.2+ versions

I have to do an app, that should work in all 2.2+ versions. I have tested in both android devices and emulators. But this app is working in few versions but not working in higher versions, If i launched my app iam getting error with null value. I don't know why its happening. According to my assumption "If we developed app for lower versions that should work in all other higher version", But that is not working. Please help me.

Here is my code that is working in 2.2, 2.3 and few higher versions. but not working in 3.2 and higher. i'm getting null value for

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_geotracker);

    textbox1 = (TextView) findViewById(R.id.textinname1);
    textbox2 = (TextView) findViewById(R.id.textinname2);

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni != null && ni.isConnected())
    {
        msg = "Please login to continue";
        login();
    }
    else
    {
        msg = "Sorry , network connection is not available.";
        message();
    }
}

//Login------------------------------------------------------------------------------------
public void login()
{
    final EditText uname = new EditText(this); 
    final EditText upassword = new EditText(this);
    DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener()
    {
        // DialogInterface called while setting the AlertDialog Buttons
        public void onClick(DialogInterface dialog, int which)
        {
            //Here you can perform functions of Alert Dialog Buttons as shown
             switch(which)
             {
                case DialogInterface.BUTTON_POSITIVE:
                    if(!uname.getText().toString().equals("") && !upassword.getText().toString().equals(""))
                    {
                        session_name = uname.getText().toString();
                        session_pwd = upassword.getText().toString();
                        try
                        {
                            uid = httppost(uname.getText().toString(), upassword.getText().toString(), "login.php"); //Here Iam getting null value.
                            Log.i("TAG", ""+uid);
                        }
                        catch(JSONException e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        if(uid == null || uid.length() == 6)
                        {
                            msg = "Either user name or password or both incorrect.";
                            login();
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "Hello " + uname.getText().toString() + ", You have successfully logged in..:)", Toast.LENGTH_LONG).show();
                            IDList()
                        }
                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "Sorry, Either user name or password or both incorrect..:(", Toast.LENGTH_LONG).show();
                        msg = "Both user name and password are mandatory fields.";
                        login();
                    }
                break;

                case DialogInterface.BUTTON_NEGATIVE:
                    exit();
                break;
            }
         }
     };

     AlertDialog.Builder builder = new AlertDialog.Builder(this);
     LinearLayout orientation = new LinearLayout(this);
     orientation.setOrientation(1); //1 is for vertical orientation
     uname.setHint("Enter name");
     upassword.setHint("Enter password");
     upassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
     orientation.addView(uname);
     orientation.addView(upassword);
     builder.setView(orientation);
     builder.setMessage(msg);
     builder.setTitle("Login")
     .setIcon(R.drawable.ic_launcher)
     .setPositiveButton("Submit", dialogClickListener)
     .setNegativeButton("Exit App", dialogClickListener).show();
}

public String httppost(String param1, String param2, String file) throws JSONException
{   
     try 
     {
        String data = URLEncoder.encode("param1", "UTF-8") + "=" + URLEncoder.encode(param1, "UTF-8");
        data += "&" + URLEncoder.encode("param2", "UTF-8") + "=" + URLEncoder.encode(param2, "UTF-8");

        // Send data
        URL url = new URL("http://192.168.1.12/GeoTracker/android/"+file);
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();

        // Get the response
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        the_string_response = rd.readLine();
        wr.close();
        rd.close();
    }
    catch (Exception e)
    {
    }
    textbox1.setText("");
    textbox2.setText("");

    return the_string_response;
}

Here is my log cat,

`05-21 19:12:50.610: D/dalvikvm(4100): Late-enabling CheckJNI

05-21 19:12:50.850: E/PhonePolicy(4100): Could not preload class for phone policy: com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback

05-21 19:12:50.970: D/TextLayoutCache(4100): Using debug level: 0 - Debug Enabled: 0

05-21 19:12:51.160: I/dalvikvm(4100): threadid=1: recursive native library load attempt (/system/lib/libwebcore.so)

05-21 19:12:51.160: D/dalvikvm(4100): No JNI_OnLoad found in /system/lib/libchromium_net.so 0x0, skipping init

05-21 19:12:51.220: D/dalvikvm(4100): GC_CONCURRENT freed 134K, 4% free 5078K/5255K, paused 1ms+1ms

05-21 19:12:51.750: D/libEGL(4100): loaded /system/lib/egl/libEGL_mali.so

05-21 19:12:51.760: D/libEGL(4100): loaded /system/lib/egl/libGLESv1_CM_mali.so

05-21 19:12:51.770: D/libEGL(4100): loaded /system/lib/egl/libGLESv2_mali.so

05-21 19:12:51.820: D/OpenGLRenderer(4100): Enabling debug mode 0

05-21 19:12:59.690: D/dalvikvm(4100): GC_CONCURRENT freed 159K, 5% free 5329K/5575K, 
paused 2ms+4ms`

05-21 19:13:11.500: I/TAG(4100): null

Please help me, Thanks in advance...

On devices with a high enough API level the system prevents you from doing network operations (http post etc...) in the main thread. If you look up further in your logcat (set it to verbose) somewhere you'll probably find something like NETWORK_ON_MAIN_THREAD_EXCEPTION in there.

That looks like it is exactly what you are doing. This would work fine on the lower API levels because the platform didn't restrict it (though it is still a bad idea)

To fix you just need to move your network operation off of the main thread. Consider using AsyncTask

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM