2013-06-19 3 views
0

Что делает этот код, так это то, что он регистрирует пользователя на сервере для gcm и моего сервера для добавления в базу данных mysql. Он также записывается в предпочтения пользователя. Приложение неожиданно останавливается после того, как оно завершает создание пользователя на сервере gcm, а также на моем сервере. Пожалуйста, помогите мне?Почему эта активность неожиданно закрывает мой андроид?

package com.package.name; 
import static com.package.name.CommonUtilities.SENDER_ID; 
import static com.package.name.CommonUtilities.SERVER_URL; 

import java.util.Random; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class RegisterActivity extends Activity { 
// alert dialog manager 
AlertDialogManager alert = new AlertDialogManager(); 

// Internet detector 
ConnectionDetector cd; 

// UI elements 
EditText txtName; 
EditText txtEmail; 

// Register button 
Button btnRegister; 

// Session Manager Class 
SessionManager session; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 

    // Session Manager 
    session = new SessionManager(getApplicationContext()); 

    cd = new ConnectionDetector(getApplicationContext()); 

    session.checkLogin(); 

    // Check if Internet present 
    if (!cd.isConnectingToInternet()) { 
     // Internet Connection is not present 
     alert.showAlertDialog(RegisterActivity.this, 
       "Internet Connection Error", 
       "Please connect to working Internet connection", false); 
     // stop executing code by return 
     return; 
    } 

    // Check if GCM configuration is set 
    if (SERVER_URL == null || SENDER_ID == null || SERVER_URL.length() == 0 
      || SENDER_ID.length() == 0) { 
     // GCM sernder id/server url is missing 
     alert.showAlertDialog(RegisterActivity.this, "Configuration Error!", 
       "Please set your Server URL and GCM Sender ID", false); 
     // stop executing code by return 
     return; 
    } 

    txtName = (EditText) findViewById(R.id.txtName); 
    txtEmail = (EditText) findViewById(R.id.txtEmail); 
    btnRegister = (Button) findViewById(R.id.btnRegister); 

    /* 
    * Click event on Register button 
    * */ 
    btnRegister.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // Read EditText dat 
      String name = txtName.getText().toString(); 
      String email = txtEmail.getText().toString(); 


      // Check if user filled the form 
      if(name.trim().length() > 0 && email.trim().length() > 0){ 
       // Launch Main Activity 
       Intent i = new Intent(getApplicationContext(), MainActivity.class); 


       // Registering user on our server     
       // Sending registraiton details to MainActivity 
       i.putExtra("name", name); 
       i.putExtra("email", email); 
       session.registerEntry(); 

       SharedPreferences pref = getApplicationContext().getSharedPreferences("A4APrefs", 0); // 0 - for private mode 
       Editor editor = pref.edit(); 

       Random r = new Random(); 
       int pairId = r.nextInt(999999-100000) + 100000; 


       editor.putInt("conId", pairId); // Storing integer 

       editor.commit(); // commit changes 
       startActivity(i); 
       finish(); 
      }else{ 
       // user doen't filled that data 
       // ask him to fill the form 
       alert.showAlertDialog(RegisterActivity.this, "Registration Error!", "Please enter your details", false); 
      } 
     } 
    }); 
} 

} 

Почему эта деятельность закрыта после запуска самостоятельно? Я действительно новичок в android и не знаю много об этом.

Ошибка LogCat соответствует следующим.

06-19 23:26:03.007: E/GCMRegistrar(29350): internal error: retry receiver class not set yet 
06-19 23:26:03.071: E/URL(29350): > http://some.com/gcm/register.php 
06-19 23:26:04.049: E/AndroidRuntime(29350): FATAL EXCEPTION: IntentService[GCMIntentService-950252240713-2] 
06-19 23:26:04.049: E/AndroidRuntime(29350): java.lang.NullPointerException 
06-19 23:26:04.049: E/AndroidRuntime(29350): at com.package.name.GCMIntentService.generateNotification(GCMIntentService.java:90) 
06-19 23:26:04.049: E/AndroidRuntime(29350): at com.package.name.GCMIntentService.onMessage(GCMIntentService.java:48) 
06-19 23:26:04.049: E/AndroidRuntime(29350): at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:223) 
06-19 23:26:04.049: E/AndroidRuntime(29350): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 
06-19 23:26:04.049: E/AndroidRuntime(29350): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-19 23:26:04.049: E/AndroidRuntime(29350): at android.os.Looper.loop(Looper.java:154) 
06-19 23:26:04.049: E/AndroidRuntime(29350): at android.os.HandlerThread.run(HandlerThread.java:65) 
06-19 23:26:05.056: E/UnRegister Receiver Error(29350): > Receiver not registered: [email protected] 

И согласно LogCat этой линии GCMIntent создающой ошибке:

String[] separated = mmessage.split("::"); 
    String epurl = separated[2]; 
    String message = separated[1]; 
    String ntitle = separated[0]; 

Я думаю, что решение будет решено путем преобразования этих строк, только если они содержат «::» в них, Можете ли вы мне помочь?

+1

Stack следы от logcat пожалуйста. – Simon

+0

Положите Logcat, который поможет лучше его решить. – iMBMT

+0

Я добавил ошибку logcat выше –

ответ

1

Если у вас есть NullPointerException на указанной вами линии, единственное возможное объяснение заключается в том, что mmessage - null.

Если проблема заключалась в том, что строка mmessage не имела достаточного количества разделителей "::", исключением должно быть ArrayIndexOutOfBoundsException, и это было бы на одной из других линий.

Простым решением было бы проверить, что mmessage является нулевым и не выполняет эту последовательность кода, если она есть. Однако я ожидаю, что тот факт, что он является null, является признаком большей проблемы в другом месте вашего кода.