如何将值从报警服务传递到android中的活动?

时间:2013-11-19 02:11:02

标签: android android-service

我正在开发android。我的应用程序包含一个图像库。我每天都需要显示一个图像作为通知。即,当点击通知时,它应该打开GALLERY图像,然后在刷卡时打开所有其他图像。

GridView.java

gridview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                intent = new Intent(First.this, Gall.class);
                intent.putExtra("pos", position);
                startActivity(intent);
            }
        });

Gall.java

int posi;

Bundle extras = getIntent().getExtras();
   if (extras != null) 
   {
     posi = extras.getString("pos");
   }

gal.setAdapter(new GallAdapter(this));
gal.setSelection(posi);

MyAlarmService:

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);

        mManager = (NotificationManager) this.getApplicationContext()
                .getSystemService(
                        this.getApplicationContext().NOTIFICATION_SERVICE);
        Intent intent1 = new Intent(this.getApplicationContext(), Gall.class);

        Notification notification = new Notification(R.drawable.icon,
                "Image of the Day!", System.currentTimeMillis());
        intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
                | Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingNotificationIntent = PendingIntent.getActivity(
                this.getApplicationContext(), 0, intent1,
                PendingIntent.FLAG_UPDATE_CURRENT);
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notification.setLatestEventInfo(this.getApplicationContext(),
                "My Images", "Image of the Day!", pendingNotificationIntent);

        mManager.notify(0, notification);

        stopSelf();
    }

我共有35张图片。因此,每天早上8点,一个图像将显示为通知,当点击通知时,它应该打开该图像并应重定向到图库页面。现在因为有35张图像我想每天显示一张图像。

从上面的代码中,早上8点之后通知将不会到来。所以那时正常的图库类将从gridview调用,它工作正常。但是当通知到来时,我怎样才能将图像的位置发送到图库类,以便第一天第1张图像,第2天第2张图像,......最多35张。而在35之后,位置应该从1,2开始, ,...

我该怎么做?请帮助我这方面。真的很感激

1 个答案:

答案 0 :(得分:1)

您可以使用LocalBroadcast Manager发送包含该位置的本地广播消息。在活动中,您可以注册接收器以接收本地广播。每当发出通知时,您都可以发送您的活动将收到的本地广播。

文档说:

  

注册并向您的进程中的本地对象发送Intents广播是一个帮手。与使用sendBroadcast(Intent)发送全局广播相比,这有许多优点。其中之一就是您播放的数据不会离开您的应用,因此无需担心泄露私人数据。

您可以在此处查看如何使用它:how to use LocalBroadcastManager?。希望它能帮到你。