Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用asynctask获取GCM注册id_Android_Google Cloud Messaging - Fatal编程技术网

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);}