Android开发之通过Intent启动其他App的Service

在Android5.0以前可以通过隐式Intent方式启动其他App的Service,就跟Activity启动隐式Intent一样的。

但是在5.0以后,只能使用显示的Intent方式启动了。

启动其他App的Service,需要用到Intent的setComponent()方法。该方法需要传入ComponentName component 这个参数。

参数的解释:component, The name of the application component to handle the intent, or null to let the system find one for you.

代码:

 1     Intent serviceIntent;
 2
 3     private Button btnstartService;
 4     private Button btnstopService;
 5
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_main);
10
11         serviceIntent=new Intent();
12         serviceIntent.setComponent(new ComponentName("com.example.startservicefromanotherapp", "com.example.startservicefromanotherapp.AppService"));
13
14         btnstartService=(Button) findViewById(R.id.btnStartService);
15         btnstopService=(Button) findViewById(R.id.btnStopService);
16
17         btnstartService.setOnClickListener(this);
18         btnstopService.setOnClickListener(this);
19     }
20
21     @Override
22     public void onClick(View v) {
23         // TODO Auto-generated method stub
24         switch (v.getId()) {
25         case R.id.btnStartService:
26             startService(serviceIntent);
27             break;
28
29         case R.id.btnStopService:
30             stopService(serviceIntent);
31             break;
32         }
33     }

这样就能启动其他App的Service。但是需要先设置其他App的Service的

1 android:exported="true"

否则会报错, java.lang.SecurityException: Not allowed to start service Intent { cmp=com.example.startservicefromanotherapp/.AppService } without permission not exported from uid 10075

提示没有权限。

时间: 2024-12-23 23:56:51

Android开发之通过Intent启动其他App的Service的相关文章

Android开发问题之无法启动虚拟机

问题分析: [2014-01-16 20:18:26 - ] The connection to adb is down, and a severe error has occured. [2014-01-16 20:18:26 - ] You must restart adb and Eclipse. [2014-01-16 20:18:26 - ] Please ensure that adb is correctly located at 'E:\java\sdk\platform-too

【Android开发】找乐,一个笑话App的制作过程记录

缘起 想做一个笑话App的原因是由于在知乎上看过一个帖子.做Android能够有哪些数据能够练手,里面推荐了几个数据开放平台. 在这些平台中无一不是有公共的笑话接口,当时心想这个能够拿来练手啊,还挺有意思的,预计还能积累一点用户. 碰巧(真的好巧)在Github中遇到了一个MVP设计模式的框架Beam,作者Jude95有一个笑话仓库----Joy(豆逼).就是一个做笑话的! 更巧的是用到的接口也是我在关注的接口.心想不如改造一下吧,做个升级版.自己也能够在这个中学到别人是怎么写App的. 后来发

Android开发指南-窗口小部件(App Widgets)

http://blog.csdn.net/iefreer/article/details/4626274# 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget)是微小的应用程序视图,可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widget provider来发布一个Widget.可以容纳其它App Widget的应用程序组件被称为App Widget宿主.下面的截屏显示了一个音乐App Widget. 这篇文章描述了如何使用App Wi

Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent.setAction("android.intent.action.CALL_BUTTON"); startActivity(intent); 和 Uri uri = Uri.parse("tel:xxxxxx"); Intent intent = new Intent(

从零开始学android开发-详细谈谈intent的startActivityForResult()方法

1.两种实现activity跳转的方法 实现activity的跳转主要有两种方法,startActivity()和startActivityForResult();例如activity A跳转到activity B 对于,第一种,是把activity A的数据,通过intent传送到activity B,但是不能返回数据. 关于第一种,可以参考我之前的这篇博文http://blog.csdn.net/conowen/article/details/7270393 2.第二种方法startActi

android开发教程之开机启动服务service示例

个例子实现的功能是:1,安装程序后看的一个Activity程序界面,里面有个按钮,点击按钮就会启动一个Service服务,此时在设置程序管理里面会看的有个Activity和一个Service服务运行2,如果手机关机重启,会触发你的程序里面的Service服务,当然,手机启动后是看不到你的程序界面.好比手机里面自带的闹钟功能,手机重启看不到闹钟设置界面只是启动服务,时间到了,闹钟就好响铃提醒. 程序代码是: 首先要有一个用于开机启动的Activity,给你们的按钮设置OnClickListener

Android开发常用的Intent的URI及示例

参考资料:http://www.oschina.net/code/snippet_166763_6502 //以下是常用到的Intent的URI及其示例,包含了大部分应用中用到的共用Intent. //一.打开一个网页,类别是Intent.ACTION_VIEW Uri uri = Uri.parse(“http://blog.3gstdy.com/”); Intent intent = new Intent(Intent.ACTION_VIEW, uri); //二.打开地图并定位到一个点 U

Android开发之常用Intent.Action【转】

1.从google搜索内容 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY,"searchString") startActivity(intent); 2.浏览网页 Uri uri = Uri.parse("http://www.google.com"); Intent it = new Int

关于android开发中的Intent(意图)

Intent在程序运行的过程中连接两个不同的组件(Acvivity) 例如当我们点击手机上的某个联系人,查看其信息时,便需要通过intent告诉android,我要做“查看”动作了 以此实现从界面A到界面B的跳转 声明方式:Intent intent = new Intent(MainActivity.this, OtherActivity.class); MainActivity为上文中的A,OtherActivity为上文中的B 而OtherActivity是从ManiFest中去寻找的,如