0

デバイスがc2dmから登録解除されたら、mysql dbから削除する方法を誰かが知っていますか?私は私の主な活動にあります:

public void unregister (View view){
        Log.w("C2DM", "start unregister process");
        Intent unregIntent = new Intent("com.google.android.c2dm.intent.UNREGISTER");
        unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));

Toast.makeText(getApplicationContext(), "unregistered", Toast.LENGTH_LONG).show();

        startService(unregIntent);

今ここに私の問題があります。登録するときに、デバイスIDと登録IDをmysqlデータベースに入力します(これは機能します)。登録解除をクリックすると、これを削除します。

私の登録受信機内で私は持っています

public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.w("C2DM", "Registration Receiver called");
        if ("com.google.android.c2dm.intent.REGISTRATION".equals(action)) {
            Log.w("C2DM", "Received registration ID");
            final String registrationId = intent
                    .getStringExtra("registration_id");
            String error = intent.getStringExtra("error");

            Log.d("C2DM", "dmControl: registrationId = " + registrationId
                    + ", error = " + error);
            String deviceId = Secure.getString(context.getContentResolver(),
                    Secure.ANDROID_ID);
            createNotification(context, registrationId);
            sendRegistrationIdToServer(deviceId, registrationId);
            // Also save it in the preference to be able to show it later
            saveRegistrationId(context, registrationId);}

sendRegistrationIdToServerは次のとおりです。

public void sendRegistrationIdToServer(String deviceId, String registrationId) {
        Log.d("C2DM", "Sending registration ID to my application server");
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://myserver.com/Sandbox/androidDevice.php");
        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            // Get the deviceID
            nameValuePairs.add(new BasicNameValuePair("Email", deviceId));
            nameValuePairs.add(new BasicNameValuePair("DeviceID",   registrationId));

            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = client.execute(post);
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));

            String line = "";
            while ((line = rd.readLine()) != null) {
                Log.e("HttpResponse", line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

onReceiveとsendRegistrationIdtoserverは、デバイスが登録されているときのものです。上記から、phpスクリプト(androidDevice.php)のURLを削除スクリプトに変更すると、レコードがデータベースから削除されます(登録ボタンをクリックすると)。だから私はスクリプトが機能することを知っています。登録の場合と同じように、登録を解除するために使用できるものはありますか?:

if ("com.google.android.c2dm.intent.REGISTRATION".equals(action)) {

(私は何か意味を持っていますか?)いつものように助けていただければ幸いです

4

1 に答える 1

0

はい、UNREGISTER実行できるインテント アクションがあります。詳細については、 Google の C2DM ページ - 登録解除を参照してください。

于 2012-05-09T14:52:45.253 に答える