Uri、setAction、setData通过按钮启动其他程序:
//通过隐式意图启动其他程序 private void btn2Click()//浏览某个网页 { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri data = Uri.parse("http://www.163.com"); intent.setData(data); startActivity(intent); } private void btn1Click()//通过按钮启动拨号 { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL);//自动拨号需要设置权限,CALL_PHONE //intent.setAction(Intent.ACTION_DIAL);//跳转到拨号界面 //Uri.fromFile(file)打开某个文件 Uri data = Uri.parse("tel:110");//号码的uri标示符格式 intent.setData(data); startActivity(intent); }
btn1Click的XML权限配置:
<uses-permission android:name="android.permission.CALL_PHONE"/>
通过隐式意图从一个项目启动另一个项目:
//通过隐式意图从一个项目启动另一个项目 private void btn1Click() { Intent intent = new Intent(); //intent.setAction("com.example.aex60"); /**1.setData后,如果隐式意图里没有组件有设置data的filter,则fc错误。 *2.setAction与setData并列关系(或的关系),隐式意图里两个都设置了,启动设置只要满足其一便能启动 *3.setData(Uri.parse("http://"))设置这个默认可以启动浏览器 *4.<data android:scheme="http" android:host="www.163.com" android:path="/note" mimeType="mnt/png"/> * scheme="http":协议,data为Uri.parse("http:") * host="www.163.com":地址 * path="/note":(类似)文件夹等,前面必须加/。 * mimeType="mnt/png":(类似)文件类型。 * * scheme、host、path、mimeType是与的关系。 * *5.intent.setData(data); * intent.setType("mnt/png"); * 这两项不能分开写,需要使用 setDataAndType(). * *6.intent.addCategory("xxxx.xxx");此方法可以增加过滤判断条件 */ // Uri data = Uri.parse("http:");//浏览器协议要加":",scheme="http" Uri data = Uri.parse("http://www.163.com/note"); // intent.setData(data); // intent.setType("mnt/png"); intent.setDataAndType(data, "mnt/png"); startActivity(intent); }
另一个项目的XML配置:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.aex60_2_intentfilter_data_componet" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.aex60_2_intentfilter_data_componet.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="com.example.aex60" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" android:host="www.163.com" android:path="/note" android:mimeType="mnt/png"/> </intent-filter> </activity> </application> </manifest>
==============================================================
其他笔记:
1.发送邮件
//建立Intent对象 Intent intent = new Intent(); //设置对象动作 intent.setAction(Intent.ACTION_SEND); //设置对方邮件地址 intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected]","[email protected]" }); //设置标题内容 intent.putExtra(Intent.EXTRA_SUBJECT, "test"); //设置邮件文本内容 intent.putExtra(Intent.EXTRA_TEXT, "test mail"); 启动一个新的ACTIVITY,"Sending mail..."是在启动这个 ACTIVITY的等待时间时所显示的文字 startActivity(Intent.createChooser(intent, "Sending mail..."));
注:
createChooser()方法设置应用选择器.
2.启动邮箱客户端
//启动邮箱客户端 private void clickEmail() { Intent mIntent = new Intent(); ComponentName comp = new ComponentName("com.android.email", "com.android.email.activity.Welcome"); mIntent.setComponent(comp); mIntent.setAction("android.intent.action.MAIN"); startActivity(mIntent); }
3.直接到邮件发送界面
//发送邮件 private void clickEmail() { Uri uri = Uri.parse("mailto:[email protected]"); Intent it = new Intent(Intent.ACTION_SENDTO, uri); startActivity(it); }
4.android直拨分机号码方法
在主机与分机号码之间加两到三个","即可。
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final String num = "@#!4$0^0*(_-7)0-0,1 2=34" + "转" + "80067"; //正则保留数字和中文("转"),将"转"替换为",,"直拨分机号 String regEx = "[^0-9\u4e00-\u9fa5]+"; Pattern p=Pattern.compile(regEx); Matcher m=p.matcher(num); String str = m.replaceAll(""); final String phone = str.replaceAll("转", ",,"); //输出结果:4007001234,,80067" final TextView textView = (TextView) findViewById(R.id.textView1); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { textView.setText(phone); callPhone(phone); } }); } public void callPhone(String num) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL);// 自动拨号需要设置权限,CALL_PHONE Uri data = Uri.parse("tel:" + num); intent.setData(data); startActivity(intent); } }
本文出自 “天空没有痕迹但我飞过” 博客,转载请与作者联系!