1

Hi In My application I am developing android chatting feature using gcm for that this is my code.I have two fields name and mobile number and button login Now.

Clicking Login Button then it will show who are online it will after using gcm i can send messages.

But clicking login Button I am getting unfortunately error and showing Service_not_Available it showing this message.

Can any one please help me how to solve this issue

MainActivity.java

public class MainActivity extends Activity {

    private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;

    String SENDER_ID = "689402109398";


    static final String TAG = "L2C";

    GoogleCloudMessaging gcm;
    SharedPreferences prefs;
    Context context;
    String regid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        prefs = getSharedPreferences("Chat", 0);
        context = getApplicationContext();
        if(!prefs.getString("REG_FROM","").isEmpty()){
            Fragment user = new UserFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame, user);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.addToBackStack(null);
            ft.commit();
        }else  if(!prefs.getString("REG_ID", "").isEmpty()){
            Fragment reg = new LoginFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame, reg);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.addToBackStack(null);
            ft.commit();

        }else if(checkPlayServices()){

            new Register().execute();

        }else{
            Toast.makeText(getApplicationContext(),"This device is not supported",Toast.LENGTH_SHORT).show();
        }
    }
    private boolean checkPlayServices() {
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if (resultCode != ConnectionResult.SUCCESS) {
            if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
                GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                        PLAY_SERVICES_RESOLUTION_REQUEST).show();
            } else {
                Log.i(TAG, "This device is not supported.");
                finish();
            }
            return false;
        }
        return true;
    }


    private class Register extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... args) {
            try {
                if (gcm == null) {
                    gcm = GoogleCloudMessaging.getInstance(context);
                    regid = gcm.register(SENDER_ID);
                    Log.e("RegId",regid);

                    SharedPreferences.Editor edit = prefs.edit();
                    edit.putString("REG_ID", regid);
                    edit.commit();

                }

                return  regid;

            } catch (IOException ex) {
                Log.e("Error", ex.getMessage());
                return "Fails";

            }
        }
        @Override
        protected void onPostExecute(String json) {
            Fragment reg = new LoginFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame, reg);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.addToBackStack(null);
            ft.commit();
        }
    }

UserFragmen.java

public class UserFragment extends Fragment {
    ListView list;
    ArrayList<HashMap<String, String>> users = new ArrayList<HashMap<String, String>>();
    Button refresh,logout;
    List<NameValuePair> params;
    SharedPreferences prefs;


    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
        View view =inflater.inflate(R.layout.user_fragment, container, false);
        prefs = getActivity().getSharedPreferences("Chat", 0);

        list = (ListView)view.findViewById(R.id.listView);
        refresh = (Button)view.findViewById(R.id.refresh);
        logout = (Button)view.findViewById(R.id.logout);
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new  Logout().execute();

            }
        });
        refresh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentById(R.id.content_frame)).commit();
                Fragment reg = new UserFragment();
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.replace(R.id.content_frame, reg);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.addToBackStack(null);
                ft.commit();

            }
        });
        new Load().execute();

        return view;
    }

    private class Load extends AsyncTask<String, String, JSONArray> {

        @Override
        protected JSONArray doInBackground(String... args) {
            JSONParser json = new JSONParser();
            params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("mobno", prefs.getString("REG_FROM","")));
            JSONArray jAry = json.getJSONArray("http://10.0.2.2/getuser",params);

            return jAry;
        }
        @Override
        protected void onPostExecute(JSONArray json) {
            for(int i = 0; i < json.length(); i++){
                JSONObject c = null;
                try {
                    c = json.getJSONObject(i);
                    String name = c.getString("name");
                    String mobno = c.getString("mobno");
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put("name", name);
                    map.put("mobno", mobno);
                    users.add(map);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
            ListAdapter adapter = new SimpleAdapter(getActivity(), users,
                    R.layout.user_list_single,
                    new String[] { "name","mobno" }, new int[] {
                    R.id.name, R.id.mobno});
            list.setAdapter(adapter);
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    Bundle args = new Bundle();
                    args.putString("mobno", users.get(position).get("mobno"));
                    Intent chat = new Intent(getActivity(), ChatActivity.class);
                    chat.putExtra("INFO", args);
                    startActivity(chat);
                }
            });
        }
    }
    private class Logout extends AsyncTask<String, String, JSONObject> {

        @Override
        protected JSONObject doInBackground(String... args) {
            JSONParser json = new JSONParser();
            params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("mobno", prefs.getString("REG_FROM","")));
            JSONObject jObj = json.getJSONFromUrl("http://10.0.2.2/chat/logout",params);

            return jObj;
        }
        @Override
        protected void onPostExecute(JSONObject json) {

            String res = null;
            try {
                res = json.getString("response");
                Toast.makeText(getActivity(),res,Toast.LENGTH_SHORT).show();
                if(res.equals("Removed Sucessfully")) {
                    Fragment reg = new LoginFragment();
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    ft.replace(R.id.content_frame, reg);
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                    ft.addToBackStack(null);
                    ft.commit();
                    SharedPreferences.Editor edit = prefs.edit();
                    edit.putString("REG_FROM", "");
                    edit.commit();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }



        }
    }

**LoginFragment **

public class LoginFragment extends Fragment {
    SharedPreferences prefs;
    EditText name, mobno;
    Button login;
    List<NameValuePair> params;
    ProgressDialog progress;
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.login_fragment, container, false);
        prefs = getActivity().getSharedPreferences("Chat", 0);
        name = (EditText)view.findViewById(R.id.name);
        mobno = (EditText)view.findViewById(R.id.mobno);

        login = (Button)view.findViewById(R.id.log_btn);
        progress = new ProgressDialog(getActivity());
        progress.setMessage("Registering ...");
        progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progress.setIndeterminate(true);



        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progress.show();
                SharedPreferences.Editor edit = prefs.edit();

                edit.putString("REG_FROM", mobno.getText().toString());
                edit.putString("FROM_NAME", name.getText().toString());
                edit.commit();
                new Login().execute();
            }
        });

        return view;
    }
    private class Login extends AsyncTask<String, String, JSONObject> {

        @Override
        protected JSONObject doInBackground(String... args) {
            JSONParser json = new JSONParser();
            params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("name", name.getText().toString()));
            params.add(new BasicNameValuePair("mobno", mobno.getText().toString()));
            params.add((new BasicNameValuePair("reg_id",prefs.getString("REG_ID",""))));

            JSONObject jObj = json.getJSONFromUrl("http://10.0.2.2/login",params);
            return jObj;



        }
        @Override
        protected void onPostExecute(JSONObject json) {
            progress.dismiss();
            try {
                String res = json.getString("response");
                if(res.equals("Sucessfully Registered")) {
                    Fragment reg = new UserFragment();
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    ft.replace(R.id.content_frame, reg);
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                    ft.addToBackStack(null);
                    ft.commit();
                }else{
                    Toast.makeText(getActivity(),res,Toast.LENGTH_SHORT).show();

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }

Logcat

12-24 03:26:46.087: E/Error(1915): SERVICE_NOT_AVAILABLE

12-24 03:28:52.087: W/System.err(1939): org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2:8660 refused
12-24 03:28:52.147: W/System.err(1939):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
12-24 03:28:52.147: W/System.err(1939):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
12-24 03:28:52.147: W/System.err(1939):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
12-24 03:28:52.177: W/System.err(1939):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:452)
12-24 03:28:52.177: W/System.err(1939):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
12-24 03:28:52.187: W/System.err(1939):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
12-24 03:28:52.187: W/System.err(1939):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
12-24 03:28:52.187: W/System.err(1939):     at com.example.androidchat.JSONParser.getJSONFromUrl(JSONParser.java:41)
12-24 03:28:52.187: W/System.err(1939):     at com.example.androidchat.LoginFragment$Login.doInBackground(LoginFragment.java:74)
12-24 03:28:52.187: W/System.err(1939):     at com.example.androidchat.LoginFragment$Login.doInBackground(LoginFragment.java:1)
12-24 03:28:52.187: W/System.err(1939):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
12-24 03:28:52.337: W/System.err(1939):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-24 03:28:52.347: W/System.err(1939):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
12-24 03:28:52.377: W/System.err(1939):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
12-24 03:28:52.377: W/System.err(1939):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
12-24 03:28:52.387: W/System.err(1939):     at java.lang.Thread.run(Thread.java:841)
12-24 03:28:52.387: W/System.err(1939): Caused by: java.net.ConnectException: failed to connect to /10.0.2.2 (port 8660): connect failed: ETIMEDOUT (Connection timed out)
12-24 03:28:52.407: I/Choreographer(1939): Skipped 30 frames!  The application may be doing too much work on its main thread.
12-24 03:28:52.427: W/System.err(1939):     at libcore.io.IoBridge.connect(IoBridge.java:114)
12-24 03:28:52.437: W/System.err(1939):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
12-24 03:28:52.437: W/System.err(1939):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
12-24 03:28:52.437: W/System.err(1939):     at java.net.Socket.connect(Socket.java:843)
12-24 03:28:52.437: W/System.err(1939):     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
12-24 03:28:52.437: W/System.err(1939):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
12-24 03:28:52.437: W/System.err(1939):     ... 15 more
12-24 03:28:52.497: I/Choreographer(1939): Skipped 52 frames!  The application may be doing too much work on its main thread.
12-24 03:28:52.617: I/Choreographer(1939): Skipped 30 frames!  The application may be doing too much work on its main thread.
12-24 03:28:52.947: W/System.err(1939): Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
12-24 03:28:53.007: I/Choreographer(1939): Skipped 36 frames!  The application may be doing too much work on its main thread.
12-24 03:28:53.087: I/Choreographer(1939): Skipped 30 frames!  The application may be doing too much work on its main thread.
12-24 03:28:53.117: W/System.err(1939):     at libcore.io.Posix.connect(Native Method)
12-24 03:28:53.117: W/System.err(1939):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
12-24 03:28:53.117: W/System.err(1939):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
12-24 03:28:53.117: W/System.err(1939):     at libcore.io.IoBridge.connect(IoBridge.java:112)
12-24 03:28:53.117: W/System.err(1939):     ... 20 more
12-24 03:28:53.117: E/Buffer Error(1939): Error converting result java.lang.NullPointerException: lock == null
12-24 03:28:53.187: I/Choreographer(1939): Skipped 62 frames!  The application may be doing too much work on its main thread.
12-24 03:28:53.457: E/JSON Parser(1939): Error parsing data org.json.JSONException: End of input at character 0 of 
12-24 03:28:53.497: I/Choreographer(1939): Skipped 36 frames!  The application may be doing too much work on its main thread.
12-24 03:28:53.697: D/AndroidRuntime(1939): Shutting down VM
12-24 03:28:53.697: W/dalvikvm(1939): threadid=1: thread exiting with uncaught exception (group=0xb2ae2ba8)
12-24 03:28:53.807: E/AndroidRuntime(1939): FATAL EXCEPTION: main
12-24 03:28:53.807: E/AndroidRuntime(1939): Process: com.example.androidchat, PID: 1939
12-24 03:28:53.807: E/AndroidRuntime(1939): java.lang.NullPointerException
12-24 03:28:53.807: E/AndroidRuntime(1939):     at com.example.androidchat.LoginFragment$Login.onPostExecute(LoginFragment.java:84)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at com.example.androidchat.LoginFragment$Login.onPostExecute(LoginFragment.java:1)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at android.os.AsyncTask.finish(AsyncTask.java:632)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at android.os.Looper.loop(Looper.java:136)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at android.app.ActivityThread.main(ActivityThread.java:5017)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at java.lang.reflect.Method.invokeNative(Native Method)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at java.lang.reflect.Method.invoke(Method.java:515)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-24 03:28:53.807: E/AndroidRuntime(1939):     at dalvik.system.NativeStart.main(Native Method)
12-24 03:28:58.477: I/Process(1939): Sending signal. PID: 1939 SIG: 9
12-24 03:29:05.277: D/dalvikvm(1976): GC_FOR_ALLOC freed 114K, 7% free 2849K/3036K, paused 183ms, total 187ms
12-24 03:29:06.027: I/Choreographer(1976): Skipped 73 frames!  The application may be doing too much work on its main thread.
12-24 03:29:06.067: D/gralloc_goldfish(1976): Emulator without GPU emulation detected.
12-24 03:29:06.267: I/Choreographer(1976): Skipped 152 frames!  The application may be doing too much work on its main thread.
12-24 03:29:07.187: D/dalvikvm(1976): GC_FOR_ALLOC freed 118K, 6% free 3242K/3428K, paused 34ms, total 34ms
master
  • 27
  • 7

0 Answers0