通过Intent 打开系统级应用

最近在做关于Android 手机桌面的应用,具体内容和功能暂且不说,主要用到了要通过Intent 打开系统级的软件。众所周知,各个手机厂商由于对Android 原生系统定制的原因,会造成系统级应用packname 和activityname 不同的现象,就拿时钟软件来说,魅族2的activityname 是【com.android.alarmclock.AlarmClock】,而HTC One 的则是【com.htc.android.worldclock.WorldClockTabControl】,所以就要使用隐式的Intent 来打开所需的软件(如时钟)。

下面将介绍不是特别常用的三个应用的Intent 打开方式:

1)Clock
intent = new Intent(AlarmClock.ACTION_SET_ALARM);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

2)Calendar
long startMillis = System.currentTimeMillis();
Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
builder.appendPath("time");
ContentUris.appendId(builder, startMillis);
intent = new Intent(Intent.ACTION_VIEW).setData(builder.build());
3)Gallery(*)
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(MediaStore.Images.Media.INTERNAL_CONTENT_URI.toString()));
关于实现这个功能,本人是费了九牛二虎之力......到网上搜,同学们的大致解决方案无外乎两种,
第一种:
intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
第二种:
intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
以上两种是可以实现打开gallery 的功能,但使用过后就会发现存在一个严重的问题:用户可以打开gallery 应用,也可以进入应用中的相册,但是当你点击相册中的图片查看时gallery 就会自动退出,大家如果也有这个功能的需求,直接使用最上面的那种方式即可,本人亲测,暂时未发现什么问题。

其实,系统级的应用还有很多,比如照相机、浏览器、拨号器等等,我这里找到一个比较全的方式以打开不同的应用,链接如下:
http://blog.csdn.net/zhiying201039/article/details/6611000




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值