2012-05-01 59 views
0

當我收到一個短信時,如何開始活動「ViewMessageListActivity」,當我點擊狀態欄中的短信通知時,狀態欄中看到短信通知,它不會打開ViewMessageListActivity(我的對話日誌)。我如何打開這個活動。當我點擊狀態欄

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.gsm.SmsMessage; 
import android.widget.Toast; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 

import android.app.Activity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 

public class SmsReceiver extends BroadcastReceiver { 

static final String ACTION = "android.provider.Telephony.SMS_RECEIVED"; 
int notificationID = 1; 

@Override 
public void onReceive(Context context, Intent intent) 
{ 

     NotificationManager mNotificationManager = 
     (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     if (intent.getAction().equals(ACTION)) { 

      StringBuilder sb = new StringBuilder(); 
      String from = new String(); 
      String body = new String(); 

      Bundle bundle = intent.getExtras(); 
      if (bundle != null) { 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       for (Object pdu : pdus){ 
       SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdu); 
       sb.append(messages.getDisplayOriginatingAddress()); 
       from = messages.getDisplayOriginatingAddress(); 
       sb.append(messages.getDisplayMessageBody()); 
       body= messages.getDisplayMessageBody(); 

       //Log.i(LOG_TAG, "[SMSApp] onReceiveIntent: " + sb); 
       //abortBroadcast(); 
       }// end for 
      }//end if 

      int icon = R.drawable.stat_notify_sms; 
      CharSequence tickerText = from + ": " + body; 
      long when = System.currentTimeMillis(); 

      Notification notification = new Notification(icon, tickerText, when); 
      CharSequence contentTitle = "New Cybernetx Secure Text Message"; 
      CharSequence contentText = from + " " + body; 

      Intent notificationIntent = new Intent(); 
      PendingIntent contentIntent = 
      PendingIntent.getActivity(context, 0, notificationIntent, 0); 

      notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
      notification.vibrate = new long[] { 100, 250, 100, 500}; 
      notification.flags |= Notification.FLAG_AUTO_CANCEL; 
      mNotificationManager.notify(notificationID, notification); 

      // intent.setAction(SendReceiveService.RECEIVE_SMS_ACTION); 
      //  intent.setClass(arg0, ViewMessageListActivity.class); 
      //  intent.putExtra("notificationID", notificationID); 
      //  arg0.startService(intent); 


       // PendingIntent contentIntent = 
       //  PendingIntent.getActivity(arg0, 0, i, 0); 

      /* Start the Main-Activity */ 
      Intent i = new Intent(context, ViewMessageListActivity.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 


     }//end if 

    } 

}

回答

1

你需要爲ViewMessageListActivity活動創造的意圖。

Intent notificationIntent = new Intent(context,ViewMessageListActivity.class); 
PendingIntent contentIntent =PendingIntent.getActivity(context, 0, notificationIntent, 0); 
.... 

並且還刪除最後三條語句。

0

您的notificationIntent爲空是問題所在。假設ViewMessageListActivity是你的嘗試:

Intent notificationIntent = new Intent(context, ViewMessageListActivity.class); 

下面是從我我在Play商店中的應用程序的一個更完整的例子(所以我知道它的工作原理:-D):

notification.setLatestEventInfo(NotificationService.this, getResources().getString(R.string.app_name), "Select to launch", IntentUtils.getMainActivityPendingIntent(this)); 

IntentUtils是一個幫手我使用和結束爲:

public static Intent getMainActivityIntent(Context context) { 
    return new Intent(context, MainActivity.class); 
} 

public static PendingIntent getMainActivityPendingIntent(Context context) { 
    return PendingIntent.getActivity(context, 0, getMainActivityIntent(context), 0); 
} 

這是幾乎相同,我最初發布。

+0

我已經嘗試瞭解決方案,但它仍然無法正常工作。 – user1024882

+0

ViewMessageListActivity是您的應用程序中的活動,還是屬於外部應用程序?我將更新我的代碼,以顯示我的應用程序中有更完整的工作示例。 –