Intent 是Android程序各个组件之间进行交互的重要方式,它不仅可以指明当前组件想要执行的动作,还可以在组件之间传递数据。Intent一般可以用于启动活动,启动服务,以及发送广播场景。Intent大致可以分为两种:1.显式Intent和隐式Intent。
实现界面跳转
1 2
| startActivity(new Intent(FirstActivity.this,SecondActivity.class));
|
实现调用浏览器打开网页
1 2 3
| Intent intent=new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.baidu.com")); startActivity(intent);
|
实现调用拨号器打电话
1 2 3
| Intent intent=new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086")); startActivity(intent);
|
实现Activity间数据传递
传递给下一个Activity数据
下面是实现点击按钮传递链接给自定义的WebView并打开链接核心代码。(记得添加互联网权限)
- 传递数据
1 2 3 4
| Intent intent=new Intent(FirstActivity.this, WebViewActivity.class);
intent.putExtra("url","https://blog.tonychenn.cn"); startActivity(intent);
|
- 接收数据
1 2 3 4 5 6 7
| WebView webView=findViewById(R.id.myWebView);
Intent intent=getIntent(); String url= intent.getStringExtra("url");
webView.setWebViewClient(new WebViewClient()); webView.loadUrl(url);
|
返回数据给上一个Activity
在上面的基础上,打开链接后,点击返回按钮,给FirstActivity返回一条消息并提示出来。
与上面不同的是第一个Activity通过startActivityForResult启动新的Activity
1 2 3 4
| Intent intent=new Intent(FirstActivity.this, WebViewActivity.class); intent.putExtra("url","https://blog.tonychenn.cn");
startActivityForResult(intent,1);
|
然后添加返回数据的监听
1 2 3 4 5 6 7 8 9 10 11 12 13
|
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { switch (requestCode){ case 1: if(resultCode==RESULT_OK){ String msg=data.getStringExtra("result"); Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); } break; } }
|
在第二个Activity中添加返回键事件
1 2 3 4 5 6 7 8 9 10
| @Override public void onBackPressed() { Intent intent=new Intent(); intent.putExtra("result","这是一条来自WebView的消息"); setResult(RESULT_OK,intent); finish(); }
|