AppWidget应用(四)---PendingIntent 之 getService

下面给出一个appWidget中Service通讯的例子

创建一个Service子类,用来处理appWidget发送过来的命令

[java] view plaincopy

  1. package com.example.service;
  2. import android.app.Service;
  3. import android.content.Intent;
  4. import android.os.IBinder;
  5. public class myService extends Service{
  6. @Override
  7. public IBinder onBind(Intent intent) {
  8. // TODO Auto-generated method stub
  9. return null;
  10. }
  11. @Override
  12. public int onStartCommand(Intent intent, int flags, int startId) {
  13. // TODO Auto-generated method stub
  14. System.out.println("--------------flags--------->" + flags);
  15. System.out.println("--------------startId--------->" + startId);
  16. System.out.println("----------------------->onStartCommand");
  17. String value = intent.getStringExtra("hello");
  18. System.out.println("value = " + value);
  19. return super.onStartCommand(intent, flags, startId);
  20. }
  21. }

为按钮绑定监听器,当点击按钮时发送一个Service

[java] view plaincopy

  1. /**
  2. * 到达指定的更新时间或者当用户向桌面添加AppWidget时被调用
  3. */
  4. @Override
  5. public void onUpdate(Context context, AppWidgetManager appWidgetManager,
  6. int[] appWidgetIds) {
  7. System.out.println("----------------onUpdate");
  8. // TODO Auto-generated method stub
  9. // 创建一个Intent对象
  10. Intent intent = new Intent(context, myService.class);
  11. intent.putExtra("hello", "我是一个Service");
  12. // 这里是getActivity,当然也可以是broadcastReceiver等   发送一个广播消息
  13. PendingIntent pendingIntent = PendingIntent.getService(context, 0,
  14. intent, 0);
  15. RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
  16. R.layout.appwidgetlayout);
  17. //为按钮绑定监听器
  18. remoteViews.setOnClickPendingIntent(R.id.btnSend, pendingIntent);
  19. // 更新Appwidget
  20. appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
  21. }

当然还要在AndroidMainfest上对Service进行注册

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.appwidgetdemo"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="8"
  8. android:targetSdkVersion="17" />
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name="com.example.appwidgetdemo.MainActivity"
  16. android:label="@string/app_name" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. <receiver android:name="com.example.appwidgetdemo.appWidgetActivity" >
  23. <intent-filter>
  24. <action android:name="android.appwidget.action.APPWIDGET_UPDATE" >
  25. </action>
  26. </intent-filter>
  27. <meta-data
  28. android:name="android.appwidget.provider"
  29. android:resource="@xml/appwidget01" />
  30. </receiver>
  31. <span style="color:#ff0000;"><service android:name="com.example.service.myService" >
  32. </service></span>
  33. </application>
  34. </manifest>

启动后的效果


当点击按钮时会在控制台上打印:我是一个Service

当然你可以处理你感兴趣的事

样例代码

点击打开链接

原文:http://blog.csdn.net/deng0zhaotai/article/details/10415209

AppWidget应用(四)---PendingIntent 之 getService

时间: 2024-10-12 18:21:42

AppWidget应用(四)---PendingIntent 之 getService的相关文章

Appwidget深入 ----按钮事件 传值

在appWidget中,ImageButton和Button都是被支持的控件,其事件可分成三种类型: 一.开启Activity 二.开始Service 三.发送按钮Action 下面开始一个一个分析,如何实现. 一.开启Activity   1.首先先定义个开启Activity的intent   eg: Intent intent=new Intent(this,FullScreen.class);   若要传递数据,则使用intent.putExtra()方法   eg: intent.put

PendingIntent详解

PendingIntent详解 http://blog.csdn.net/hudashi/article/details/7060837 ppWidget(二) PendingIntent 关于android中PendingIntent.getBroadcase的注册广播 1)什么是PendingIntent PendingIntent和Intent略有不同,它可以设置执行次数,主要用于远程服务通信.闹铃.通知.启动器.短信中,在一般情况下用的比较少.  2)PendingIntent什么用  

14、AppWidget及Launcher

一.Launcher的简单研究 1 什么是Launcher Android系统启动后加载的第一个程序 . 这个程序是其他应用程序的入口 . Launcher构成: HomeScreen : (Workspace + HotSeats)  , Shortcut,LiveFolder , AppWidget , WallPaper . AllAppList (用GridView) 2 针对Launcher的开发类型 1)开发自己的Launcher 2)在Wordspace做文章 添加Shortcut

Xamarin.Android其他类型的服务

一.前言 前面我们已经学了关于服务的很多知识,但是对于真实的开发那些远远不够,通过这节我们将学习其他类型的服务,比如前台服务.IntentService和消息服务.下面我们开始进入正题. 二.前台服务 顾名思义,就是拥有前台的优先等级.当然服务还是不可见的.因为前面我们介绍过Android系统会在低内存的情况下将一些长时间不用的应用关闭,如果还是不够,那么就会通过关闭服务服务来达到目的,然而对于某些应用而言,这样将会影响用户的正常使用.比如听音乐,我们基本上都会打开应用选择歌曲后将应用置为后台.

为Widget添加事件

  原帖:http://bbs.51cto.com/thread-965565-1-1.html 在appWidget中,ImageButton和Button都是被支持的控件,其事件可分成三种类型: 一.开启Activity 二.开始Service 三.发送按钮Action 下面开始一个一个分析,如何实现. 一.开启Activity 1.首先先定义个开启Activity的intent eg:   Intent fullIntent=new Intent(this,FullScreen.class

android app widget 创建调用周期

Android开发历程_15(AppWidget的使用) Appwidget就是手机应用中常常放在桌面(即home)上的一些应用程序,比如说闹钟等.这种应用程序的特点是它上面显示的内容能够根据系统内部的数据进行更新,不需要我们进入到程序的内部去,比如说闹钟指针的摆动等.本节内容就简单的介绍下实现这种功能所用到的appwidget技术,通过3个例子由浅入深来学会使用它.参考资料是mars的教程. 实验基础: 自己实现一个AppWidget的步骤如下: 1. 在src目录下新建一个名为xml的文件夹

Core官方DI解析(4)--CallSiteRuntimeResolver

? CallSiteRuntimeResolver类型是一个创建或获取服务实例的类型,这个类型继承了CallSiteVisitor<TArgument, TResult>这个类型,也是使用了访问者模式,下面一一来解析此类 ServiceProviderEngineScope 在解析`CallSiteRuntimeResolver`之前先看一下`ServiceProviderEngineScope`类型,这个类型就可以是一个容器类型,最后实例化的服务对象就缓存在此类之中, 从下面代码中可以看出此

AppWidget简单实用案例(四个步骤)

什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作.本篇打算从以下几个点来介绍AppWidget: 1.如何创建一个简单的AppWidget 2.如何使得AppWidget与客户端程序交互 创建简单的AppWidget 在介绍之前给大家看一下程序运行的最后结果和项目结构图,以便大家有个整体的印象. 运行结果图: 项目结构图: 第一步:            首先在res文件夹下新建一个名字为xml的文件夹,然后

Android PendingIntent的getActivity()、getBroadcast()、getService()方法的区别

pendingIntent是一种特殊的Intent.主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的.pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的. 主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等. PendingIntent中 getActivi