Uri、setAction、setData通过按钮启动其他程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//通过隐式意图启动其他程序
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权限配置:
1
|
<uses-permission android:name=
"android.permission.CALL_PHONE"
/>
|
通过隐式意图从一个项目启动另一个项目:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//通过隐式意图从一个项目启动另一个项目
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配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?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.发送邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//建立Intent对象
Intent intent =
new
Intent();
//设置对象动作
intent.setAction(Intent.ACTION_SEND);
//设置对方邮件地址
intent.putExtra(Intent.EXTRA_EMAIL,
new
String[]
{
"abc@com.cn"
,
"edf@com.cn"
});
//设置标题内容
intent.putExtra(Intent.EXTRA_SUBJECT,
"test"
);
//设置邮件文本内容
intent.putExtra(Intent.EXTRA_TEXT,
"test mail"
);
启动一个新的ACTIVITY,
"Sending mail..."
是在启动这个
ACTIVITY的等待时间时所显示的文字
startActivity(Intent.createChooser(intent, "Sending
mail..."));
|
注:
1
|
createChooser()方法设置应用选择器.
|
2.启动邮箱客户端
1
2
3
4
5
6
7
8
9
10
|
//启动邮箱客户端
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.直接到邮件发送界面
1
2
3
4
5
6
7
|
//发送邮件
private
void
clickEmail()
{
Uri uri = Uri.parse(
"mailto:housebox@manjay.com"
);
Intent it =
new
Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
}
|
4.android直拨分机号码方法
在主机与分机号码之间加两到三个","即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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);
}
}
|
本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1211562,如需转载请自行联系原作者