Intent 常用用法

Intent 应该算是Android中特有的东西。你可以在Intent中指定程序 要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料 。都指定好后,只要调用startActivity(),Android系统 会自动寻找最符合你指定要求的应用 程序,并执行该程序。 

下面列出几种Intent 的用法 
显示网页: 

Uri uri = Uri.parse("http://www.google.com"); 
Intent it  = new Intent(Intent.ACTION_VIEW,uri); 
startActivity(it); 
 

显示地图: 
Uri uri = Uri.parse("geo:38.899533,-77.036476"); 
Intent it = new Intent(Intent.Action_VIEW,uri); 
startActivity(it); 
 

路径规划: 
Uri uri = Uri.parse("http://maps.google.com/maps?f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); 
Intent it = new Intent(Intent.ACTION_VIEW,URI); 
startActivity(it); 
 

拨打电话: 
调用拨号程序 ,要使用这个必须在配置文件 中加入<uses-permission id="android .permission.CALL_PHONE" /> 
Uri uri = Uri.parse("tel:xxxxxx"); 
Intent it = new Intent(Intent.ACTION_DIAL, uri);   
startActivity(it);   
Uri uri = Uri.parse("tel.xxxxxx"); 
Intent it =new Intent(Intent.ACTION_CALL,uri); 

 


发送SMS/MMS 
调用发送短信 的程序 

Intent it = new Intent(Intent.ACTION_VIEW);    
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);   
 

发送彩信 
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")); 
 

播放 多媒体 
Intent it = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/song.mp3"); 
it.setDataAndType(uri, "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);  
 
   
如果是从BroadcastReceiver 启动一个新的Activity , 不要忘记i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
public class MyReceiver extends BroadcastReceiver{ 

public static final String action="acc"; 
public void onReceive(Context context, Intent intent) { 
  Intent i=new Intent(context,Receivered.class); 
  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  context.startActivity(i); 
} 

} 
 


1. 指定act ion 和type 
// SIM import 
        Intent importIntent = new Intent(Intent.ACTION_VIEW); 
        importIntent.setType("vnd.android.cursor.item/sim-contact"); 
        importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts"); 
        menu.add(0, 0, 0, R.string.importFromSim) 
                .setIcon(R.drawable.ic_menu_import_contact) 
                .setIntent(importIntent); 
 
                
2. 指定act ion, da ta和type 
(1)隐式查找type 
示例代码: 
uri: content://simcontacts/simPeople/(id) 
intent = new Intent("android.intent.action.SIMEDIT",uri); 
            startActivity(intent); 
 

程序会很据data中的uri去查找匹配的type(必须的)            
provider中的getType()            
case SIM_PEOPLE_ID: 
            return "vnd.android.cursor.item/sim-contact"; 
 

配置文件中的filter设定           
AndroidManifest.xml 
    <intent-filter> 
                <action android:name="android.intent.action.SIMEDIT" /> 
                <category android:name="android.intent.category.DEFAULT" />          
                <data android:mimeType="vnd.android.cursor.item/sim-contact" /> 
      </intent-filter> 

 

也可以自己设定type,但只能使用 setDataAndType()     
      
3. 其他设定intent的属性方式 

   Intent setComponent(ComponentName component) 
   Intent setClassName(Context packageContext, String className) 
   Intent setClassName(String packageName, String className) 
   Intent setClass(Context packageContext, Class<?> cls) 
 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值