使用GCM推送通知的Android更改视图

时间:2014-07-24 15:08:51

标签: android layout push-notification google-cloud-messaging

当通知应用程序时,我需要在应用程序中执行某些操作,例如更改视图,从GCMIntentService设置文本。例如,在应用程序运行时通知推送时,图标将显示为红色。

我试过这些代码但没有改变。

在GCMIntentService.java中

LayoutInflater inflater = (LayoutInflater)   context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.main_fragment_activity, null);

ImageView img = (ImageView) view.findViewById(R.id.main_tab_home_btn);
img.setBackgroundColor(Color.RED);  

另外

Handler h = new Handler(Looper.getMainLooper());
    h.post(new Runnable(){

        @Override
        public void run() { 
           //some codes
         }
    });

1 个答案:

答案 0 :(得分:0)

您的问题有点令人困惑 - 我假设您要说的是您想要添加功能,以便在用户点击通知时,您可以导航到您的特定视图应用

您最好的选择可能是让GCMIntentService.java类处理意图,并让意图由其他类执行。由于您要根据通知意图更改视图,我建议将其放在您的主要活动类中。

如果我没有弄错的话,这种活动实际上是未决意图的一部分 - 主动意图是实际通知用户,但最终以某种独特的方式加载您的应用程序。

所以,在你的GCMIntentServices课程中,无论你在哪里处理通知(或者这可能在你的Receiver课程中,它都取决于你)

    Intent myIntent = new Intent(context, DummyActivity.class);

然后,您希望在将第一个意图传递给DummyActivity.class之后建立要发布的待定意图

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, myIntent, 0);

现在,重要的是,在扩展Activity的任何类中,你建立一些可以获得这个待定意图并执行你想要的功能(在这种情况下,加载一些View)

在DummyActivity.class中:

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState); 

handleNewIntent(getIntent());
  }

然后,handleNewIntent的方法:

public void handleNewIntent(Intent intent) {

  Bundle payload = intent.getExtras(); 
  //You could add some string to uniquely identify each message and what you want it to   
  //do

  String wheretogo = intent.getStringExtra("something");
  if (wheretogo == "blah") {
    //LayoutInflater
    View v = inflater.inflate(R.layout.wheretogo, null); 
  } else {
    //otherwise load something different
  }

希望这会有所帮助。要在您的消息未决意图,接收器类或意图中添加某些内容,无论您在哪里卸载有效负载,只需执行类似

的操作即可。
    pendingIntent.putExtra("something","blah");