intent 应用

在一个Android应用中,主要由四种组件组成(四种组件分别为:Activity、Broadcast、Service、ContentProvider),而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。在这些组件之间的通讯中,主要是由Intent协助完成的。

       

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。

                        

因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

                 

例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为ListActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为DetailActivity)为了实现这个目的,ListActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到AndroidManifest.xml中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为DetailActivity,最终传入Intent,DetailActivity则会根据此Intent中的描述,执行相应的操作。

   
   
显示网页
Uri uri
= Uri.parse( " http://www.google.com.hk/ " );
Intent intent
= new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);


显示地图
Uri uri
= Uri.parse( " geo:38.899533,-77.036476 " );
Intent intent
= new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
// 其他geo URI范例(latitude: 纬度,longitude: 经度)
// geo:latitude,longitude
// geo:latitude,longitude?z=zoom
// geo:0,0?q=my+street+address
// geo:0,0?q=business+near+city
// google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom



路径规划
Uri uri
= Uri.parse( " http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en " );
Intent intent
= new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
// where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456


打电话
// 叫出拨号程序
Uri uri = Uri.parse( " tel:0800000123 " );
Intent intent
= new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);

// 直接打电话出去
Uri uri = Uri.parse( " tel:0800000123 " );
Intent intent
= new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
// 用這個,要在 AndroidManifest.xml 中,加上<uses-permission id="android.permission.CALL_PHONE" />

传送SMS
/ MMS
// 调用短信程序
Intent it = new Intent(Intent.ACTION_VIEW, uri);
it.putExtra(
" sms_body " , " The SMS text " );
it.setType(
" vnd.android-dir/mms-sms " );
startActivity(it);

// 传送消息
Uri uri = Uri.parse( " smsto://0800000123 " );
Intent it
= new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra(
" sms_body " , " The SMS text " );
startActivity(it);

// 传送 MMS
Uri uri = Uri.parse( " content://media/external/images/media/23 " );
Intent it
= new Intent(Intent.ACTION_SEND);
it.putExtra(
" sms_body " , " some text " );
it.putExtra(Intent.EXTRA_STREAM, uri);
it.setType(
" image/png " );
startActivity(it);

传送 Email
Uri uri
= Uri.parse( " mailto:xxx@abc.com " );
Intent it
= new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);

Intent it
= new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL,
" me@abc.com " );
it.putExtra(Intent.EXTRA_TEXT,
" The email body text " );
it.setType(
" text/plain " );
startActivity(Intent.createChooser(it,
" Choose Email Client " ));

Intent it
= new Intent(Intent.ACTION_SEND);
String[] tos
= { " me@abc.com " };
String[] ccs
= { " you@abc.com " };
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT,
" The email body text " );
it.putExtra(Intent.EXTRA_SUBJECT,
" The email subject text " );
it.setType(
" message/rfc822 " );
startActivity(Intent.createChooser(it,
" Choose Email Client " ));

// 传送附件
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT,
" The email subject text " );
it.putExtra(Intent.EXTRA_STREAM,
" file:///sdcard/mysong.mp3 " );
sendIntent.setType(
" audio/mp3 " );
startActivity(Intent.createChooser(it,
" Choose Email Client " ));

播放多媒体
Uri uri
= Uri.parse( " file:///sdcard/song.mp3 " );
Intent it
= new Intent(Intent.ACTION_VIEW, uri);
it.setType(
" audio/mp3 " );
startActivity(it);



Uri uri
= Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, " 1 " );
Intent it
= new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);


Market 相关
// 寻找某个应用
Uri uri = Uri.parse( " market://search?q=pname:pkg_name " );
Intent it
= new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
// where pkg_name is the full package path for an application

// 显示某个应用的相关信息
Uri uri = Uri.parse( " market://details?id=app_id " );
Intent it
= new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
// where app_id is the application ID, find the ID
// by clicking on your application on Market home
// page, and notice the ID from the address bar

Uninstall 应用程序
Uri uri
= Uri.fromParts( " package " , strPackageName, null );
Intent it
= new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值