所谓意图操作,就是指在应用程序中通过Intent调用系统应用程序的组件,例如打开相机、浏览器,收发短信等等,下面列出了常用的意图机制:
1、 使用相机
android.provider.MediaStore.ACTION_IMAGE_CAPTURE
在应用程序中添加相机功能的方式很多,您可以直接在应用程序中使用相机(并赋予用程序合适的权限),也可以使用意图机制启动其他提供相机功能的应用程序,从而将现有的相机支持能共集成到应用中其中第二种方法最简单也最常用,所以这里只说第二种方法。
当前,在应用程序中包含拍照功能最简单方式是,使用android.provider.MediaStore类定义的意图ACTION_IMAGE_CAPTURE。这个意图可以用于启动相机、拍摄照片并返回照片信息。
具体代码如下:
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView)findViewById(R.id.imageView);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.action_exit:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, R.string.exti);
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(getApplicationContext(), requestCode + "/" + resultCode, Toast.LENGTH_SHORT).show();
switch (requestCode)
{
case R.string.exti:
Toast.makeText(getApplicationContext(), requestCode + "/" + resultCode, Toast.LENGTH_SHORT).show();
Bitmap bitmap = (Bitmap)data.getExtras().get("data");
imageView.setImageBitmap(bitmap);
break;
}
}
2、 打开一个网页,类别是Intent.ACTION_VIEW
Uri uri = URI.parse(“http://blog.csdn.net/zhai56565”);
Intent intent = new Intent(Intent.ACTION_VIEW , uri);
3、 打开地图并定位到一个点
Uri uri = Uri.parse(“geo:34.34 , 108.108”);
Intent intent = new Intent(Intent.ACTION , uri);
4、 打开拨号界面,类型是Intent.ACTION_DIAL
Uri uri = Uri.parse(“tel:10086”);
Intent intent = new Intent(Intent.ACTION_DIAL , uri);
5、 直接拨打电话,与上面不同的是,这个直接拨打电话,而不是打开拨号界面
Uri uri = Uri.parse(“tell:10086”);
Intent intent = new Intent(Intent.ACTION_CALL , uri);
6、 卸载一个应用,Intent的类别是Intent.ACTION_DELETE
Uri uri = Uri.fromParts(“package”, “***” , null);
Intent intent = new Intent(Intent.ACTION_DELETE , url);
7、 安装应用程序,Intent的类别是Intent.ACTION_PACKAGE_ADDED
Uri uri = Uri.fromParts(“package”,”***”,null);
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED , uri);
8、 播放音频文件
Uri uri = Uri.parse(“file:///sdcard/download/everything.mp3”);
Intent intent = new Intent(Intent.ACTION_VIEW , uri);
Intent.setType(“audio/mp3”);
9、 打开发邮件界面
Uri uri = Uri.parse(“mailto:413672141@qq.com”);
Intent intent = new Intent(Intent.ACTION_SENDTO , uri);
10、发邮件,与上面不同的是这里将邮件发送出去
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = {“admin@163.com”};
String[] ccs = {“webmaster@163.com”};
intent.putExtra(Intent.EXTRA_EMAIL , tos);
intent.putExtra(Intent.EXTRA_CC , ccs);
intent.putExtra(Intent.EXTRA_TEXT , “I come from 413672141@qq.com”);
intent.putExtra(Intent.EXTRA_SUBJECT , “413672141@qq.com”);
intent.setType(“message/rfc882”);
Intent.createChooser(intent , “Choose Email Client”);
//发送带附件的邮件
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT , “The email subject text”);
intent.putExtra(Intent.EXTRA_STREAM , “file:///sdcard/mysong.mp3”);
intent.setType(“audio/mp3”);
startActivity(Intent.createChooser(intent , “Choose Email Client”));
11、跳转到发短信页面
Uri uri = Uri.parse(“tell:10086”);
Intent intent = new Intent(Intent.ACTION_VIEW , uri);
intent.putExtra(“sms_body” , “I come from 413672141@qq.com”);
intent.setType(“vnd.Android-dir/mms-sms”);
12、直接发短信
Uri uri = Uri.parse(“smsto://10086”);
Intent intent = new Intent(Intent.ACTION_SENDTO , uri);
Intent.putExtra(“sms_body” , “我的博客是:413672141@qq.com”);
13、发彩信
Uri uri = Uri.parse(“content://media/external/images/media/23”);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(“sms_body” . “我的博客是:413672141@qq.com”);
intent.putExtra(Intent.EXTRA_STREAM , uri);
intent.setType;
14、寻找Market相关:
1)、寻找某个应用
Uri uri = Uri.parse(“market://search?q=pname:pkg_name”);
Intent intent = new Intent(Intent.ACTION_VIEW , uri);
startActivity(intent);
//pkg_name是应用程序包的完整路径
2)、显示某个应用的相关信息
Uri uri = Uri.parse(“market://details:?id=app_id”);
Intent intent = new Intent(Intent.ACTION_VIEW , uri);
startActivity(intent);
//app_id是应用程序的ID
15、路径规划
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
16、使用图库,Intent.action.PICK
Intent pickPhoto = new Intent(Intent.ACTION_PICK);
pickPhoto.setType(“image/*”);
startActivityForResult(pickPhoto , TAKE_AVATAR_GALLERY_REQUEST);
在返回方法onActivityResult()中,从Intent参数data中获取Uri,然后使用Media类(MediaStore.Images.Media)的方法getBitmap(),获取Bitmap对象:
Uri uri = data.getData();
Bitmap bitmap = Media.getBitmap(getContentResolver() , uri);