2013-10-20 6 views
17

Ich bin sehr neu in Android App-Entwicklung. Mit Hilfe so vieler Tutorials habe ich eine App mit Webview, Actionbar und GCM erstellt. Alles funktioniert gut. Aber ich bekomme eine Warnung "Die Konstruktorbenachrichtigung ist veraltet". Ich bin durch notification.builder gegangen. aber ich bin nicht in der Lage, meine Codes mit neuen Benachrichtigung Buider zu ändern. Kann mir jemand helfen .....Die Benachrichtigung des Konstruktors ist veraltet

public class GCMIntentService extends GCMBaseIntentService { 

private static final String TAG = "GCMIntentService"; 

public GCMIntentService() { 
    super(SENDER_ID); 
} 

/** 
* Method called on device registered 
**/ 
@Override 
protected void onRegistered(Context context, String registrationId) { 
    Log.i(TAG, "Device registered: regId = " + registrationId); 
    displayMessage(context, "Your device registred with GCM"); 
    Log.d("NAME"," "+ MainActivity.name); 
    ServerUtilities.register(context, MainActivity.name, MainActivity.email, MainActivity.AndroidVersion, MainActivity.AndroidID, MainActivity.manufacturer, MainActivity.model, registrationId); 
} 

/** 
* Method called on device un registred 
* */ 
@Override 
protected void onUnregistered(Context context, String registrationId) { 
    Log.i(TAG, "Device unregistered"); 
    displayMessage(context, getString(R.string.gcm_unregistered)); 
    ServerUtilities.unregister(context, registrationId); 
} 

/** 
* Method called on Receiving a new message 
* */ 
@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString("price"); 

    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
* Method called on receiving a deleted message 
* */ 
@Override 
protected void onDeletedMessages(Context context, int total) { 
    Log.i(TAG, "Received deleted messages notification"); 
    String message = getString(R.string.gcm_deleted, total); 
    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
* Method called on Error 
* */ 
@Override 
public void onError(Context context, String errorId) { 
    Log.i(TAG, "Received error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_error, errorId)); 
} 

@Override 
protected boolean onRecoverableError(Context context, String errorId) { 
    // log message 
    Log.i(TAG, "Received recoverable error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_recoverable_error, 
      errorId)); 
    return super.onRecoverableError(context, errorId); 
} 

/** 
* Issues a notification to inform the user that server has sent a message. 
*/ 
private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.ic_launcher; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) 
      context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 

    String title = context.getString(R.string.app_name); 

    Intent notificationIntent = new Intent(context, MainActivity.class); 
    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
      Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = 
      PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    // Play default notification sound 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    //notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "your_sound_file_name.mp3"); 

    // Vibrate if vibrate is enabled 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notificationManager.notify(0, notification);  

} 

} 

* * Manifest sdkversion 8 bis 18

Antwort

34

Sie versuchen, den Konstruktor für die Benachrichtigung zu verwenden, die 11. als der API ist veraltet Bedeutung es isn Wird nicht länger unterstützt und sollte nicht verwendet werden. verwenden Notification.Builder statt https://developer.android.com/reference/android/app/Notification.Builder.html

Notification noti = new Notification.Builder(mContext) 
    .setContentTitle("New mail from " + sender.toString()) 
    .setContentText(subject) 
    .setSmallIcon(R.drawable.new_mail) 
    .setLargeIcon(aBitmap) 
    .build(); 

Sie haben zur Zeit folgendes:

Notification notification = new Notification(icon, message, when); 

Dieser Konstruktor wird zugunsten des Notification.Builder veraltet, die wie folgt aussehen würde:

Notification notification = new Notification.Builder(context) 
    .setContentText(message) 
    .setSmallIcon(icon) 
    .setWhen(when) 
    .build(); 
+0

Ich werde es versuchen und update – Indra

+0

Any Luck Indra? – Antman06

+0

Nein, ich konnte nicht herausfinden – Indra

1

Wie für die ursprüngliche Frage funktioniert diese Klasse, wenn Ihr System GCMBaseIntentService unterstützt:

package ...; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

import com.google.android.gcm.GCMBaseIntentService; 

import static com.example.taxiprofessional.CommonUtilities.SENDER_ID; 
import static com.example.taxiprofessional.CommonUtilities.displayMessage; 

public class GCMIntentService extends GCMBaseIntentService { 

    private static final String TAG = "GCMIntentService"; 

public GCMIntentService() { 
    super(SENDER_ID); 
} 

/** 
    * Method called on device registered 
    **/ 
@Override 
protected void onRegistered(Context context, String registrationId) { 
    Log.i(TAG, "Device registered: regId = " + registrationId); 
    displayMessage(context, "Your device registred with GCM"); 
    AccountInformation info=AccountInformation.sharedInstance(); 
    ServerUtilities.register(context, info.email, info.password, registrationId); 
} 

/** 
    * Method called on device un registred 
    * */ 
@Override 
protected void onUnregistered(Context context, String registrationId) { 
    Log.i(TAG, "Device unregistered"); 
    displayMessage(context, getString(R.string.gcm_unregistered)); 
    ServerUtilities.unregister(context, registrationId); 
} 

/** 
    * Method called on Receiving a new message 
    * */ 
@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString("price"); 

    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
    * Method called on receiving a deleted message 
    * */ 
@Override 
protected void onDeletedMessages(Context context, int total) { 
    Log.i(TAG, "Received deleted messages notification"); 
    String message = getString(R.string.gcm_deleted, total); 
    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

/** 
    * Method called on Error 
    * */ 
@Override 
public void onError(Context context, String errorId) { 
    Log.i(TAG, "Received error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_error, errorId)); 
} 

@Override 
protected boolean onRecoverableError(Context context, String errorId) { 
    // log message 
    Log.i(TAG, "Received recoverable error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_recoverable_error, 
      errorId)); 
    return super.onRecoverableError(context, errorId); 
} 

/** 
    * Issues a notification to inform the user that server has sent a message. 
    */ 
private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.taxi_profi; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) 
      context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 

    String title = context.getString(R.string.app_name); 

    Intent notificationIntent = new Intent(context, Dashboard.class); 
    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
      Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = 
      PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    // Play default notification sound 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    // Vibrate if vibrate is enabled 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notificationManager.notify(0, notification);  

} 

} 
-1

Ich habe versucht folgende Tutorial an: http://javapapers.com/android/google-cloud-messaging-gcm-for-android-and-push-notifications/ und in der Tat scheinen ich in der Lage das Senden von Benachrichtigungen zu registrieren und gibt keine Fehler, wie Sie an sehen können: http://push.taxiprofessional.net/android/testNotification.php

Noch keine Meldung eintrifft. Hat jemand das benutzt und kann helfen, es zu entlarven?

+0

Probieren Sie dieses Tutorial ...... http: //www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ –

+0

Ich denke, das Die Antwort könnte ein Kommentar zu der Frage gewesen sein, kein Antworteintrag, weil sie keine Lösung anbietet, sondern eine Frage stellt. –

Verwandte Themen