二、Android系统怎么找?
主要是通过Intent Filter来寻找与隐式Intent相关的对象。具体的选择方法是:Android将Intent的请求内容<intent-filter>比较,Intent Filter中包含系统中所有可能的待选组件。如果<intent-filter>中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件作为该隐式Intent的目标组件。
三、<intent-filter>的基本格式如下:
<!--1.这里定义了目标活动(目标组件) -> .SecondActivity--> <!--2.指明这个活动的【动作标识action为】:com.example.activity.ACTION_START--> <!--3.指明这个活动的【类别标识category为】:android.intent.category.DEFAULT 与--> <!--com.example.activity.CPJ_category1与com.example.activity.CPJ_category2--> <activity android:name="com.example.activity.SecondActivity"> <intent-filter> <action android:name="com.example.activity.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="com.example.activity.CPJ_category1"/> <category android:name="com.example.activity.CPJ_category2"/> </intent-filter> </activity> <!--指定当前活动可以响应com.example.activity.ACTION_START这个action--> <!--1.<category>标签包含一些附加信息,更精确指明当前的活动能够响应的Intent中,还可能带有的category--> <!--2.只有action和category同时匹配才能响应Intnet--> <!--3.android.intent.category.DEFAULT是一种默认的category,在调用--> <!--startActivity()时会自动把这个category添加到intent中--> <!--4.一个intent只能有一个action,但是可以有多个category--> <!--5.一个intent-filter可以同时有多个个action-->
<intent-filter> <actionandroid:name="com.example.project.SHOW_CURRENT" /> <actionandroid:name="com.example.project.SHOW_RECENT" /> <actionandroid:name="com.example.project.SHOW_PENDING" /> </intent-filter>
<intent-filter> <categoryandroid:name="android.Intent.Category.DEFAULT" /> <categoryandroid:name="android.Intent.Category.BROWSABLE" /> </intent-filter>
<intent-filter> <data android:type="video/mpeg" android:scheme="http" . . . /> <data android:type="audio/mpeg" android:scheme="http" . . . /> </intent-filter>
五、Intent.Action(安卓系统内置动作)的常见用法:
1. Intent.ACTION_MAIN
String: android.intent.action.MAIN
作用:标识Activity为一个程序的开始(表明app首先执行的Activity)。比较常用。
Input: nothing
Output: nothing
例:
<!--android.intent.action.MAIN 决定应用程序最先启动的Activity--> <!--android.intent.category.LAUNCHER 决定应用程序是否显示在程序列表里--> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);//设置当前动作为拨打电话
intent.setData(Uri.parse("tel:1320010001"));//设置要拨打的电话
startActivity(intent);
<uses-permission android:name="android.permission.CALL_PHONE"/>
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);//设置当前动作为调用拨号盘
intent.setData(Uri.parse("tel:1584014xxxx"));//设置准备要拨打的电话
startActivity(intent);//Button的点击事件-直接拨打电话
Button btn_call = (Button) findViewById(R.id.Call);
btn_call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);//设置当前动作为拨打电话
intent.setData(Uri.parse("tel:1584014xxxx"));//设置要拨打的电话
startActivity(intent);
}
});
//Button的点击事件-直接拨打电话
Button btn_dial = (Button) findViewById(R.id.Dial);
btn_dial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);//设置当前动作为调用拨号盘
intent.setData(Uri.parse("tel:1584014xxxx"));//设置准备要拨打的电话
startActivity(intent);
}
});
//获取用户输入电话号码的EditText
final EditText edt_phoneNumber = (EditText) findViewById(R.id.phonebunber_id);
//Button点击事件-用户自己拨号
Button btn_userCall = (Button) findViewById(R.id.userCall);
btn_userCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//先验证用户输入电话的有效性(使用安卓自带的包来判断电话的有效性)
String phoneNumber = edt_phoneNumber.getText().toString();
if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
Intent intentDial = new Intent();
intentDial.setAction(Intent.ACTION_CALL);//设置当前为用户自定义拨号
intentDial.setData(Uri.parse("tel:"+ phoneNumber));
startActivity(intentDial);
//提示用户电话输入有误
} else {
Toast.makeText(CallActivity.this, "你输入的电话有误,请重新输入", Toast.LENGTH_SHORT)
.show();
}
}
});说明:这里演示几个简单的应用;
//Button的点击事件-打开地图
Button btn_geo = (Button) findViewById(R.id.geo);
btn_geo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);//设置当前动作
intent.setData(Uri.parse("geo:39.899533,116.036476"));//打开地图定位(直接打开你手机上的地图软件)
startActivity(intent);
}
});
//Button的点击事件-打开浏览器
Button btn_http = (Button) findViewById(R.id.http);
btn_http.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);//设置当前动作
intent.setData(Uri.parse("http://www.baidu.com"));//打开浏览器并打开百度
startActivity(intent);
}
});
//Button的点击事件-打开一张照片
Button btn_image = (Button) findViewById(R.id.image);
btn_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);//设置当前动作
//你若不清楚你的存储路劲,可以在DDMS下查看
Uri uri = Uri.parse("file:///storage/sdcard1/DCIM/Camera/IMG_20150622_172748.jpg");
intent.setDataAndType(uri, "image/*");
startActivity(intent);
}
});
//Button的点击事件-打开视频
Button btn_video = (Button) findViewById(R.id.video);
btn_video.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);//设置当前动作
Uri uri = Uri.parse("file:///storage/sdcard1/---");
intent.setDataAndType(uri, "video/*");
startActivity(intent);
}
});
//Button的注册事件-查看通讯录
Button SeeContacts_BT = (Button) findViewById(R.id.SeeContacts);
SeeContacts_BT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("content://contacts/people/1"));//查看通讯录中的第一个联系人
startActivity(intent);
}
});String number = numberET.getText().toString();// 获得用户输入的号码
String message = messageET.getText().toString();// 获得用户输入的短信
if(PhoneNumberUtils.isGlobalPhoneNumber(number)) {
Intent intent = new Intent();// 创建Intent对象
intent.setData(Uri.parse("smsto:" + number)); // 设置要发送的号码
intent.putExtra("sms_body", message); // 设置要发送的信息内容
startActivity(intent);// 将Intent传递给Activity
} else {
Toast.makeText(SendToActivity.this, "你输入的电话错误,请重新输入!",
Toast.LENGTH_SHORT).show();
}
6. Intent.ACTION_BATTERY_LOW
作用:显示电量低的警告信息
说明:因为这一块用到广播,所以具体的实现办法在复习有关广播的知识时写
7. Intent.ACTION_EDIT
作用:编辑通讯录中某条特定的联系人信息
例:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_EDIT);
intent.setData(Uri.parse("content://contacts/people/1"));//修改通讯录中的第一个联系人
startActivity(intent);
1.http://blog.csdn.net/coder80/article/details/7879259
2.http://www.cnblogs.com/hanyonglu/archive/2012/03/26/2417278.html
3.《Android程序开发范例宝典》
原文:http://blog.csdn.net/qq_25465845/article/details/51211007