2012-10-04 59 views
0

開始我嘗試從通知消防意圖:意圖不通知

CharSequence tickerText = "ServiceTicker"; // context.getString(R.string.service_ticker_registered_text); 
long when = System.currentTimeMillis(); 

Builder nb = new NotificationCompat.Builder(context); 
nb.setTicker(tickerText); 
nb.setWhen(when); 
Intent notificationIntent = new Intent(context, AccountRegistrationChanged.class); 

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

RegistrationNotification contentView = new RegistrationNotification(context.getPackageName()); 
contentView.clearRegistrations(); 
if(!Compatibility.isCompatible(9)) { 
    contentView.setTextsColor(notificationPrimaryTextColor); 
} 
contentView.addAccountInfos(context, activeAccountsInfos); 

nb.setOngoing(true); 
nb.setOnlyAlertOnce(true); 
nb.setContentIntent(contentIntent); 
nb.setContent(contentView); 

Notification notification = nb.build(); 
notification.flags |= Notification.FLAG_NO_CLEAR; 
// We have to re-write content view because getNotification setLatestEventInfo implicitly 
notification.contentView = contentView; 
Log.e(THIS_FILE, "==============notification:" + notification + " contentView:" + contentView + " notificationIntent:" + notificationIntent + " contentIntent" + contentIntent + " context:" + context + " nb:" + nb); 

if (showNumbers) { 
    // This only affects android 2.3 and lower 
    notification.number = activeAccountsInfos.size(); 
} 
startForegroundCompat(REGISTER_NOTIF_ID, notification); 

private void startForegroundCompat(int id, Notification notification) { 
    // If we have the new startForeground API, then use it. 
    if (mStartForeground != null) { 
     Log.e(THIS_FILE, "mStartForeground"); 

     mStartForegroundArgs[0] = Integer.valueOf(id); 
     mStartForegroundArgs[1] = notification; 
     invokeMethod(mStartForeground, mStartForegroundArgs); 
     return; 
    } 
    Log.e(THIS_FILE, "invokeMethod"); 

    // Fall back on the old API. 
    mSetForegroundArgs[0] = Boolean.TRUE; 
    invokeMethod(mSetForeground, mSetForegroundArgs); 
    notificationManager.notify(id, notification); 
} 

終於我在日誌中,哪裏是所有意圖和觀點正確創建:

10-04 22:38: 49.344:E/Notifications(7415):

==============通知(振動= null,聲音= null,默認= 0x0)contentView:com.csipsimple .widgets.RegistrationNotification @ 44eb3ff8 notificationIntent:Inten噸{FLG = 0x10000000的 CMP = com.callsfreecalls.android/.AccountRegistrationChanged} contentIntentPendingIntent {44eb3fe8:[email protected]} 上下文:[email protected] NB:android.support.v4 .app.NotificationCompat $生成器@ 44eb3e30 10-04 22:38:49.344:E /通知(7415):mStartForeground

10-04 22:38:49.344:E /通知(7415):mStartForeground

但是什麼也沒有發生,這個代碼:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.e(THIS_FILE, "AccountRegistrationChanged"); 

    setContentView(R.layout.activity_account_registration_changed); 
} 

在活動/ AccountRegistrationChanged沒有開始......

這裏是體現了活動:

<activity 
    android:name=".AccountRegistrationChanged" 
    android:label="@string/title_activity_account_registration_changed" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

什麼建議嗎?也許我不得不開火更多來推動通知開始意圖? 目前我只需要激活從另一個活動的一些元素,但與處理程序(如下所述)代碼導致未知的錯誤而不調試任何解釋:

SipProfileState ps = activeAccountsInfos.get(i); 
Message msg = new Message(); 
Bundle b = new Bundle(); 
b.putString("regState",String.valueOf(ps.getStatusCode())); 
msg.setData(b); 
PhonePadActivity.getUareceiverhandler().sendMessage(msg); 
+0

@mah你的意思是? – user170317

+0

@mah對於所有回答的問題,我確認併爲正確答案添加點。也許問題是我有很多未解答的問題?我現在知道爲什麼。 – user170317

+0

我明白你的意思了;我刪除了我之前的評論。 – mah

回答

1

也許你AccountRegistrationChanged活動onNewIntent()方法被解僱,而不是onCreate()。您的通知之前是否已經創建了AccountRegistrationChanged活動?

+0

對不起,確認,但它不正確。 onCreate永遠不會被解僱,onNewIntent也是如此...... – user170317

+0

清單中的'AccountRegistrationChanged'活動是否存在? – UgglyNoodle

+0

是的,請參閱編輯的問題 – user170317