2隐式Intent.docx
- 文档编号:10190814
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:15
- 大小:18.22KB
2隐式Intent.docx
《2隐式Intent.docx》由会员分享,可在线阅读,更多相关《2隐式Intent.docx(15页珍藏版)》请在冰豆网上搜索。
2隐式Intent
显式Intent定义:
对于明确指出了目标组件名称的Intent,我们称之为显式Intent。
隐式Intent定义:
对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。
说明:
Android系统使用IntentFilter来寻找与隐式Intent相关的对象。
隐式Intent主要有两种:
1:
根据自定义的Action属性访问Activity
2:
根据系统的Action属性访问系统应用
第一种情况:
根据自定义的Action属性访问自己的Activity
定义第一个Activity:
publicclassMainActivityextendsActivity{
//定义Action属性常量
publicstaticfinalStringMY_ACTION="com.amaker.ch07.app.MY_ACTION";
//声明Button
privateButtonbtn;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//设置布局视图
setContentView(R.layout.main);
//实例化Button
btn=(Button)findViewById(R.id.Button01);
btn.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//实例化Intent
Intentintent=newIntent();
//为Intent设置Action属性
intent.setAction(MY_ACTION);
//启动Activity
startActivity(intent);
}
});
}
}
对应的XML页面:
xmlversion="1.0"encoding="utf-8"?
>
android=" android: orientation="vertical"android: layout_width="fill_parent" android: layout_height="fill_parent"> 第二个Activity: (要跳转到得页面) publicclassMyActivityextendsActivity{ //声明TextView privateTextViewtv; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //设置视图布局 setContentView(R.layout.my_layout); //获得Intent对象 Intentintent=getIntent(); //获得Action Stringaction=intent.getAction(); //获得TextView tv=(TextView)findViewById(R.id.TextView01); //设置内容 tv.setText(action); } } 对应的XML页面: xmlversion="1.0"encoding="utf-8"? > android=" android: orientation="vertical" android: layout_width="fill_parent" android: layout_height="fill_parent" > android: text="@+id/TextView01" android: id="@+id/TextView01" android: layout_width="wrap_content" android: layout_height="wrap_content"> 在配置文件中配置: icon="@drawable/icon"android: label="@string/app_name"> name=".MainActivity" android: label="@string/app_name"> name="android.intent.action.MAIN"/> name="android.intent.category.LAUNCHER"/> android: name=".MyActivity" > name="com.amaker.ch06.app.MY_ACTION"> name="android.intent.category.DEFAULT"/> 注意: Intent要跳转的页面根据他的Action的值来匹配配置文件里面的这个action: name="com.amaker.ch06.app.MY_ACTION"> 第二种情况: 根据系统的Action属性访问系统应用 已拨打电话为例: XML文件: xmlversion="1.0"encoding="utf-8"? > xmlns: android=" android: layout_width="fill_parent" android: layout_height="fill_parent" > android: orientation="vertical" android: layout_width="fill_parent" android: layout_height="fill_parent"> android: layout_width="fill_parent" android: layout_height="wrap_content" android: text="输入电话号码"/> android: layout_width="fill_parent" android: layout_height="wrap_content" android: id="@+id/et01"> Java文件: importandroid.app.Activity; importandroid.content.Intent; import.Uri; importandroid.os.Bundle; importandroid.provider.Contacts; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.EditText; publicclassMainActivityextendsActivity{ //定义Action属性常量 publicstaticfinalStringMY_ACTION="com.amaker.ch07.app.MY_ACTION"; //声明Button privateButtonbtn,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //设置布局视图 setContentView(R.layout.activity_main); //实例化Button btn=(Button)findViewById(R.id.Button01); btn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //实例化Intent Intentintent=newIntent(); //为Intent设置Action属性 intent.setAction(MY_ACTION); //发送数据到下一个Activity intent.putExtra("title","Intent测试"); //启动Activity startActivity(intent); } }); btn2=(Button)findViewById(R.id.Button02); btn2.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //拨打电话 EditTexteditText=(EditText)findViewById(R.id.et01); Uriuri=Uri.parse("tel: "+editText.getText()); Intentintent=newIntent(Intent.ACTION_CALL,uri); startActivity(intent); } }); //拨打电话,绑定电话号码 btn3=(Button)findViewById(R.id.Button03); btn3.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Uriuri=Uri.parse("tel: 111"); Intentit=newIntent(Intent.ACTION_DIAL,uri); startActivity(it); } }); //浏览网页 btn4=(Button)findViewById(R.id.Button04); btn4.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub //浏览网页 Uriuri=Uri.parse(""); Intentit=newIntent(Intent.ACTION_VIEW,uri); startActivity(it); } }); //发送短信 btn5=(Button)findViewById(R.id.Button05); btn5.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentit=newIntent(Intent.ACTION_VIEW); it.putExtra("sms_body1","TheSMStext1"); it.setType("vnd.android-dir/mms-sms"); startActivity(it); } }); //发送短信 btn6=(Button)findViewById(R.id.Button06); btn6.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Uriuri=Uri.parse("smsto: 0800000123"); Intentit=newIntent(Intent.ACTION_SENDTO,uri); it.putExtra("sms_body2","TheSMStext2"); startActivity(it); } }); //播放音乐 btn7=(Button)findViewById(R.id.Button07); btn7.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentit=newIntent(Intent.ACTION_VIEW); Uriuri=Uri.parse("file: ///sdcard/music/gee.mp3"); it.setDataAndType(uri,"audio/mp3"); startActivity(it); } }); //到联系人界面 btn8=(Button)findViewById(R.id.Button08); btn8.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentintent=newIntent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Contacts.People.CONTENT_URI); startActivity(intent); } }); //通话记录界面 btn9=(Button)findViewById(R.id.Button09); btn9.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentintent=newIntent(); intent.setAction(Intent.ACTION_CALL_BUTTON); startActivity(intent); } }); } } 配置文件: (各种权限) name="android.permission.INTERNET"/> name="android.permission.WRITE_EXTERNAL_STORAGE"/> name="android.permission.CALL_PHONE"/> name="android.permission.SEND_SMS"/> name="android.permission.READ_CONTACTS"/> name="android.permission.READ_SMS"/> name="android.permission.RECORD_AUDIO"/> name="android.permission.READ_PHONE_STATE"/> 在2.x的版本中,在manifest中配置的权限android.permission.WRITE_EXTERNAL_STORAGE确实是用来使得sd卡获得写的权限。 在4.0开发的源码当中,由于有了内外置sd卡的区分, android.permission.WRITE_EXTERNAL_STORAGE的权限用来设置了内置sd卡的写权限,如果在manifest中只是配置了这个权限,那个应用只能在内置sd卡中进行写操作, 还是无法在外置sd卡中进行写操作。 需要写外置sd卡的话,需要配置另一个权限android.permission.WRITE_MEDIA_STORAGE,这样就可以在外置sd卡中进行写入操作了。 其他系统提供的常用功能: Intent调用系统实例分析 1.从google搜索内容 Intentintent=newIntent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY,"searchString") startActivity(intent); 2.浏览网页 Uriuri=Uri.parse("")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 隐式 Intent