tihi 2013-01-11
Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
发表于19天前?Android,Android开发?评论数1?被围观热度49?+
现在开发中的功能需要直接跳转到拨号、联系人、短信界面等等,查找了很多资料,自己整理了一下。
首先,我们先看拨号界面,代码如下:
Intentintent=newIntent();
intent.setAction("android.intent.action.CALL_BUTTON");
startActivity(intent);和Uriuri=Uri.parse("tel:xxxxxx");
Intentintent=newIntent(Intent.ACTION_DIAL,uri);
startActivity(intent);
两者都行
但是如果是跳转到应用,使用一下代码:
Intentintent=newIntent("android.intent.action.DIAL");
intent.setClassName("com.android.contacts","com.android.contacts.DialtactsActivity");
到通话记录界面:
Intentintent=newIntent();
intent.setAction(Intent.ACTION_CALL_BUTTON);
startActivity(intent);
到联系人界面:
Intentintent=newIntent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Contacts.People.CONTENT_URI);
startActivity(intent);
同理,到应用:
Intentintent=newIntent("com.android.contacts.action.LIST_STREQUENT");
intent.setClassName("com.android.contacts","com.android.contacts.DialtactsActivity");
调用联系人界面:
Intentintent=newIntent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Contacts.People.CONTENT_URI);
startActivity(intent);
插入联系人
Intentintent=newIntent(Intent.ACTION_EDIT,
Uri.parse("content://com.android.contacts/contacts/"+"1"));
startActivity(intent);
到联系人列表界面
Intentintent=newIntent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType("vnd.android.cursor.item/person");
intent.setType("vnd.android.cursor.item/contact");
intent.setType("vnd.android.cursor.item/raw_contact");
intent.putExtra(android.provider.ContactsContract.Intents.Insert.NAME,name);
intent.putExtra(android.provider.ContactsContract.Intents.Insert.COMPANY,company);
intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE,tel);
intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE_TYPE,3);
到短信界面:
Intentintent=newIntent(Intent.ACTION_VIEW);
intent.setType("vnd.android-dir/mms-sms");
//intent.setData(Uri.parse("content://mms-sms/conversations/"));//此为号码
startActivity(intent);
到应用:
Intentintent=newIntent("android.intent.action.CONVERSATION");
startActivity(intent);
以下是在网上找到的其他方法:
1.从google搜索内容
Intentintent=newIntent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);
2.浏览网页
Uriuri=Uri.parse("http://www.google.com");
Intentit=newIntent(Intent.ACTION_VIEW,uri);
startActivity(it);
3.显示地图
Uriuri=Uri.parse("geo:38.899533,-77.036476");
Intentit=newIntent(Intent.Action_VIEW,uri);
startActivity(it);
4.路径规划
Uriuri=Uri.parse("http://maps.google.com/maps?
f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intentit=newIntent(Intent.ACTION_VIEW,URI);
startActivity(it);
5.拨打电话
Uriuri=Uri.parse("tel:xxxxxx");
Intentit=newIntent(Intent.ACTION_DIAL,uri);
startActivity(it);
和
uri=Uri.parse("tel:"+number);
intent=newIntent(Intent.ACTION_CALL,uri);
startActivity(intent);
其中不同自己试验一下就知道了。
6.调用发短信的程序
Intentit=newIntent(Intent.ACTION_VIEW);
it.putExtra("sms_body","TheSMStext");
it.setType("vnd.android-dir/mms-sms");
startActivity(it);
和
uri=Uri.parse("smsto:"+要发送短信的对方的number);
intent=newIntent(Intent.ACTION_SENDTO,uri);
startActivity(intent);
和
mIntent=newIntent(Intent.ACTION_VIEW);
mIntent.putExtra("address",c.getString(c.getColumnIndex(column)));
mIntent.setType("vnd.android-dir/mms-sms");
startActivity(mIntent);
7.发送短信
Uriuri=Uri.parse("smsto:0800000123");
Intentit=newIntent(Intent.ACTION_SENDTO,uri);
it.putExtra("sms_body","TheSMStext");
startActivity(it);
Stringbody="thisissmsdemo";
Intentmmsintent=newIntent(Intent.ACTION_SENDTO,Uri.fromParts("smsto",number,null));
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,true);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,true);
startActivity(mmsintent);
8.发送彩信
Uriuri=Uri.parse("content://media/external/images/media/23");
Intentit=newIntent(Intent.ACTION_SEND);
it.putExtra("sms_body","sometext");
it.putExtra(Intent.EXTRA_STREAM,uri);
it.setType("image/png");
startActivity(it);
StringBuildersb=newStringBuilder();
sb.append("file://");
sb.append(fd.getAbsoluteFile());
Intentintent=newIntent(Intent.ACTION_SENDTO,Uri.fromParts("mmsto",number,null));
//Belowextradatasarealloptional.
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT,subject);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI,sb.toString());
intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,composeMode);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,exitOnSent);
startActivity(intent);
9.发送Email
Uriuri=Uri.parse("mailto:[email protected]");
Intentit=newIntent(Intent.ACTION_SENDTO,uri);
startActivity(it);
Intentit=newIntent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL,"[email protected]");
it.putExtra(Intent.EXTRA_TEXT,"Theemailbodytext");
it.setType("text/plain");
startActivity(Intent.createChooser(it,"ChooseEmailClient"));
Intentit=newIntent(Intent.ACTION_SEND);
String[]tos={"[email protected]"};
String[]ccs={"[email protected]"};
it.putExtra(Intent.EXTRA_EMAIL,tos);
it.putExtra(Intent.EXTRA_CC,ccs);
it.putExtra(Intent.EXTRA_TEXT,"Theemailbodytext");
it.putExtra(Intent.EXTRA_SUBJECT,"Theemailsubjecttext");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it,"ChooseEmailClient"));
Intentit=newIntent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT,"Theemailsubjecttext");
it.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it,"ChooseEmailClient"));
10.播放多媒体
Intentit=newIntent(Intent.ACTION_VIEW);
Uriuri=Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri,"audio/mp3");
startActivity(it);
Uriuri=Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
Intentit=newIntent(Intent.ACTION_VIEW,uri);
startActivity(it);
11.uninstallapk
Uriuri=Uri.fromParts("package",strPackageName,null);
Intentit=newIntent(Intent.ACTION_DELETE,uri);
startActivity(it);
12.installapk
UriinstallUri=Uri.fromParts("package","xxx",null);
returnIt=newIntent(Intent.ACTION_PACKAGE_ADDED,installUri);
13.打开照相机
<1>Intenti=newIntent(Intent.ACTION_CAMERA_BUTTON,null);
this.sendBroadcast(i);
<2>longdateTaken=System.currentTimeMillis();
Stringname=createName(dateTaken)+".jpg";
fileName=folder+name;
ContentValuesvalues=newContentValues();
values.put(Images.Media.TITLE,fileName);
values.put("_data",fileName);
values.put(Images.Media.PICASA_ID,fileName);
values.put(Images.Media.DISPLAY_NAME,fileName);
values.put(Images.Media.DESCRIPTION,fileName);
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME,fileName);
UriphotoUri=getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
IntentinttPhoto=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);
startActivityForResult(inttPhoto,10);
14.从gallery选取图片
Intenti=newIntent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(i,11);
15.打开录音机
Intentmi=newIntent(Media.RECORD_SOUND_ACTION);
startActivity(mi);
16.显示应用详细列表
Uriuri=Uri.parse("market://details?id=app_id");
Intentit=newIntent(Intent.ACTION_VIEW,uri);
startActivity(it);
//whereapp_idistheapplicationID,findtheID
//byclickingonyourapplicationonMarkethome
//page,andnoticetheIDfromtheaddressbar
刚才找appid未果,结果发现用packagename
也可以Uriuri=Uri.parse("market://details?id=<packagename>");
这个简单多了
17寻找应用
Uriuri=Uri.parse("market://search?q=pname:pkg_name");
Intentit=newIntent(Intent.ACTION_VIEW,uri);
startActivity(it);
//wherepkg_nameisthefullpackagepathforanapplication
18打开联系人列表
<1>
Intenti=newIntent();
i.setAction(Intent.ACTION_GET_CONTENT);
i.setType("vnd.android.cursor.item/phone");
startActivityForResult(i,REQUEST_TEXT);
<2>
Uriuri=Uri.parse("content://contacts/people");
Intentit=newIntent(Intent.ACTION_PICK,uri);
startActivityForResult(it,REQUEST_TEXT);
19打开另一程序
Intenti=newIntent();
ComponentNamecn=newComponentName("com.yellowbook.android2",
"com.yellowbook.android2.AndroidSearch");
i.setComponent(cn);
i.setAction("android.intent.action.MAIN");
startActivityForResult(i,RESULT_OK);
20添加到短信收件箱
ContentValuescv=newContentValues();
cv.put("type","1");
cv.put("address","短信地址");
cv.put("body","短信内容");
getContentResolver().insert(Uri.parse("content://sms/inbox"),cv);
21从sim卡或者联系人中查询
Cursorcursor;
Uriuri;
if(type==1){
Intentintent=newIntent();
intent.setData(Uri.parse("content://icc/adn"));
uri=intent.getData();
}else
uri=People.CONTENT_URI;
cursor=activity.getContentResolver().query(uri,null,null,null,null);
while(cursor.moveToNext()){
intpeopleId=cursor.getColumnIndex(People._ID);
intnameId=cursor.getColumnIndex(People.NAME);
intphoneId=cursor.getColumnIndex(People.NUMBER);}
查看某个联系人,当然这里是ACTION_VIEW,
如果为选择并返回action改为ACTION_PICK,当然处理intent时返回需要用到startActivityforResult
UripersonUri=ContentUris.withAppendedId(People.CONTENT_URI,ID);
//最后的ID参数为联系人Provider中的数据库BaseID,即哪一行
Intentintent=newIntent();intent.setAction(Intent.ACTION_VIEW);
intent.setData(personUri);startActivity(intent);
22删除
uri=ContentUris.withAppendedId(People.CONTENT_URI,联系人id);
intcount=activity.getContentResolver().delete(uri,null,null);
23添加到联系人:
ContentValuescv=newContentValues();
ArrayList<ContentProviderOperation>operationList=newArrayList<ContentProviderOperation>();
ContentProviderOperation.Builderbuilder=ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValues(cv);
operationList.add(builder.build());
builder=ContentProviderOperation.newInsert(Data.CONTENT_URI);
builder.withValueBackReference(StructuredName.RAW_CONTACT_ID,0);
builder.withValue(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(StructuredName.DISPLAY_NAME,"自定义联系人名");
operationList.add(builder.build());
builder=ContentProviderOperation.newInsert(Data.CONTENT_URI);
builder.withValueBackReference(Phone.RAW_CONTACT_ID,0);
builder.withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE);
builder.withValue(Phone.NUMBER,"联系人的phonenumber");
builder.withValue(Data.IS_PRIMARY,1);
operationList.add(builder.build());
try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY,operationList);
}catch(RemoteExceptione){
e.printStackTrace();
}catch(OperationApplicationExceptione){
e.printStackTrace();
}
23选择一个图片
Intentintent=newIntent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent,0);
24调用Android设备的照相机,并设置拍照后存放位置
Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(newFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/cwj",
android123+".jpg")));
//存放位置为sdcard卡上cwj文件夹,文件名为android123.jpg格式
startActivityForResult(intent,0);
25在market上搜索指定packagename,比如搜索com.android123.cwj的写法如下
Uriuri=Uri.parse("market://search?q=pname:com.android123.cwj");
Intentintent=newIntent(Intent.ACTION_VIEW,uri);startActivity(intent);
26获取文件信息,并使用相对应软件打开
viewplain
privatevoidopenFile(Filef)
{
Intentintent=newIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
Stringtype=getMIMEType(f);
intent.setDataAndType(Uri.fromFile(f),type);
startActivity(intent);
}
privateStringgetMIMEType(Filef){
Stringend=f
.getName()
.substring(f.getName().lastIndexOf(".")+1,
f.getName().length()).toLowerCase();
Stringtype="";
if(end.equals("mp3")||end.equals("aac")||end.equals("aac")
||end.equals("amr")||end.equals("mpeg")
||end.equals("mp4"))
{
type="audio";
}elseif(end.equals("jpg")||end.equals("gif")
||end.equals("png")||end.equals("jpeg"))
{
type="image";
}else
{
type="*";
}
type+="/*";
returntype;