Android 使用asynctask获取GCM注册id
我使用此脚本在Android 使用asynctask获取GCM注册id,android,google-cloud-messaging,Android,Google Cloud Messaging,我使用此脚本在doInbackgroundAsyncTask任务中获取注册id,但注册id仍然为空。没有错误或强制关闭,但注册id为空 public class RegisterTask extends AsyncTask<String, Void, Integer> { public RegisterTask(RegisterActivity activity, ProgressDialog progressDialog) { this.activity = activi
doInbackground
AsyncTask任务中获取注册id,但注册id仍然为空。没有错误或强制关闭,但注册id为空
public class RegisterTask extends AsyncTask<String, Void, Integer> {
public RegisterTask(RegisterActivity activity, ProgressDialog progressDialog) {
this.activity = activity;
this.progressDialog = progressDialog;
}
@Override
protected void onPreExecute() {
progressDialog.show();
}
@Override
protected Integer doInBackground(String... arg0) {
inputFullName = (EditText) activity.findViewById(R.id.registerName);
inputEmail = (EditText) activity.findViewById(R.id.registerEmail);
inputPassword = (EditText) activity.findViewById(R.id.registerPassword);
String name = inputFullName.getText().toString();
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
Log.v(email, password);
UserFunctions userFunction = new UserFunctions();
// Make sure the device has the proper dependencies.
GCMRegistrar.checkDevice(activity);
// Make sure the manifest was properly set - comment out this line
// while developing the app, then uncomment it when it's ready.
GCMRegistrar.checkManifest(activity);
// lblMessage = (TextView) findViewById(R.id.lblMessage);
activity.registerReceiver(activity.mHandleMessageReceiver,
new IntentFilter(DISPLAY_MESSAGE_ACTION));
// Get GCM registration id
regId = GCMRegistrar.getRegistrationId(activity);
JSONObject json = userFunction.registerUser(name, email, password,
regId);
// check for login response
try {
if (json.getString(KEY_SUCCESS) != null) {
// registerErrorMsg.setText("");
String res = json.getString(KEY_SUCCESS);
if (Integer.parseInt(res) == 1) {
// user successfully registred
// Store user details in SQLite Database
DatabaseHandler db = new DatabaseHandler(
activity.getApplicationContext());
JSONObject json_user = json.getJSONObject("user");
// Clear all previous data in database
userFunction.logoutUser(activity.getApplicationContext());
db.addUser(json_user.getString(KEY_ID_USER),
json_user.getString(KEY_NAMA),
json_user.getString(KEY_EMAIL),
json_user.getString(KEY_REGID),
json_user.getString(KEY_JKEL),
json_user.getString(KEY_TLAHIR),
json_user.getString(KEY_INSTANSI),
json_user.getString(KEY_JABATAN),
json_user.getString(KEY_DIBUAT_AT),
json_user.getString(kEY_AVATAR),
json_user.getString(kEY_STATUS));
// successful registration
responseCode = 1;
} else {
// Error in registration
responseCode = 0;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return responseCode;
}
@Override
protected void onPostExecute(Integer responseCode) {
EditText userName = (EditText) activity
.findViewById(R.id.registerEmail);
EditText passwordEdit = (EditText) activity
.findViewById(R.id.registerPassword);
String s = userName.getText().toString();
if (responseCode == 1) {
progressDialog.dismiss();
activity.registerReport(responseCode);
userName.setText("");
passwordEdit.setText("");
}
if (responseCode == 0) {
progressDialog.dismiss();
activity.registerReport(responseCode);
}
}
}
公共类寄存器任务扩展异步任务{
公共RegisterTask(RegisterActivity活动,ProgressDialog ProgressDialog){
这个。活动=活动;
this.progressDialog=progressDialog;
}
@凌驾
受保护的void onPreExecute(){
progressDialog.show();
}
@凌驾
受保护的整数doInBackground(字符串…arg0){
inputFullName=(EditText)activity.findViewById(R.id.registerName);
inputEmail=(EditText)activity.findViewById(R.id.registerEmail);
inputPassword=(EditText)activity.findViewById(R.id.registerPassword);
字符串名称=inputFullName.getText().toString();
字符串email=inputEmail.getText().toString();
字符串密码=inputPassword.getText().toString();
Log.v(电子邮件、密码);
UserFunctions userFunction=新的UserFunctions();
//确保设备具有正确的依赖项。
GCMRegistar.检查设备(活动);
//确保清单设置正确-注释此行
//开发应用程序时,请在应用程序准备就绪时取消注释。
GCMRegistrar.检查清单(活动);
//lblMessage=(TextView)findViewById(R.id.lblMessage);
activity.registerReceiver(activity.mHandleMessageReceiver,
新的意图过滤器(显示消息动作);
//获取GCM注册id
regId=gcmregistar.getRegistrationId(活动);
JSONObject json=userFunction.registerUser(名称、电子邮件、密码、,
雷吉德);
//检查登录响应
试一试{
if(json.getString(KEY_SUCCESS)!=null){
//registerErrorMsg.setText(“”);
String res=json.getString(KEY_SUCCESS);
if(Integer.parseInt(res)==1){
//用户已成功注册
//在SQLite数据库中存储用户详细信息
DatabaseHandler db=新的DatabaseHandler(
activity.getApplicationContext());
JSONObject json_user=json.getJSONObject(“用户”);
//清除数据库中以前的所有数据
logoutUser(activity.getApplicationContext());
db.addUser(json_user.getString(KEY_ID_user),
json_user.getString(KEY_NAMA),
json_user.getString(KEY_电子邮件),
json_user.getString(KEY_REGID),
json_user.getString(KEY_JKEL),
json_user.getString(KEY_TLAHIR),
json_user.getString(KEY_INSTANSI),
json_user.getString(KEY_JABATAN),
json_user.getString(KEY_DIBUAT_AT),
json_user.getString(kEY_AVATAR),
json_user.getString(kEY_STATUS));
//成功注册
响应代码=1;
}否则{
//登记错误
响应代码=0;
}
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回响应代码;
}
@凌驾
受保护的void onPostExecute(整数响应代码){
EditText用户名=(EditText)活动
.findViewById(R.id.registerEmail);
EditText密码编辑=(EditText)活动
.findViewById(R.id.registerPassword);
字符串s=userName.getText().toString();
如果(响应代码==1){
progressDialog.disclose();
活动注册表报告(响应代码);
userName.setText(“”);
passwordEdit.setText(“”);
}
如果(响应代码==0){
progressDialog.disclose();
活动注册表报告(响应代码);
}
}
}
请帮助您必须使用gcmregistar.register(mContext)请求获取id。您必须在清单文件中声明接收者,以启用接收注册和消息意图。现在要真正接收消息,您必须实现自己的服务,该服务将扩展GCMBaseIntentService。您可以找到GCM教程。这不是它的工作方式,如果您不使用
gcmregistar.register(Context)
首先登录ar GCM服务,它将始终为空。这是的副本。我可以把gcmregistar.register(mContext)放在doinbackground中吗?最终字符串regId=gcmregistar.getRegistrationId(活动);如果(regId.equals(“”){//注册不存在,请立即向GCM//gcmregistar.register(此,发送方ID);gcmregistar.register(活动,发送方ID);}