Intent的使用

Intent可以分为两种:显式Intent和隐式。
1.显示Intent
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
2.使用隐式Intent

隐式Intent并不指明要启动那个活动,而是指定了一系列更为抽象的action,category等信息,然后交由系统去分析这个Intent,并帮我们找到可以响应这个隐式Intent的活动去启动。
在AndroidManifest.xml中添加


        
               

               
        
 
Intent intent = new Intent(android.intent.action.ACTION_START);
startActivity(intent);

表示我们要启动能够响应android.intent.action.ACTION_START这个action的活动,因为android.intent.category.DEFULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中。
那么如何添加categoty呢?
只需intent.addCategory(android.intent.category.MY_CATEGORY);就行了。
当然Intent的隐式调用不禁能打开同一个App里的活动,还能打开另一个App里的活动,同样只需要与new Intent();里的action相同即可,不过一般不建议这样做。

3.Intent的其他用法

-展示一个网页

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

当然,要显示出网页,要在AndroidManifest.xml中添加访问网络的权限


-调用系统拨号界面

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
3.向下个活动传递数据
  • 直接传递
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("data",content);
startActivity(intent);

接受数据

Intent intent = getIntent();
string content = intent.getStringExtar("data");
  • 使用Bundle进行传递
Bundle bundle = new Bundle();
bundle.put("key", value);
intent.putExtra(bundle);
intent.putExtra("key1",bundle);

接收数据

Intent intent = getIntent();
Bundle bundle = intent.getExtra();
bundle.getObject("key");
bundle.getObject("key1",value);//当key1不存在是,value为默认值
4.返回数据给上一个活动
Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, requestCode);

在SecondActivity.java页面放置要返回的数据

Intent intent = new Intent();
intent.putExtra("key", 1);
setResult("RESULT_OK", intent);
finish();

SecondActivity被销毁后会回掉上个活动的onActivityResult()方法。

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case 1:
                if (resultCode = RESULT_OK){
                    
                }
                break;
        }
    }

你可能感兴趣的:(Intent的使用)