美文网首页
Intent的使用

Intent的使用

作者: 糖糖_2c32 | 来源:发表于2018-08-07 20:47 被阅读0次
    Intent可以分为两种:显式Intent和隐式。
    1.显示Intent
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
    
    2.使用隐式Intent

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

    <activity android:name=".SecondActivity">
            <intent-filter>
                   <action android:name="android.intent.action.ACTION_START" />
    
                   <category android:name="android.intent.category.DEFULT" />
            </intent-filter>
     </activity>
    
    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里的活动,同样只需要<action/>与new Intent();里的action相同即可,不过一般不建议这样做。

    3.Intent的其他用法

    -展示一个网页

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

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

    <user-permission android:name="android.permission.INTERNET"/>
    

    -调用系统拨号界面

    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的使用

          本文链接:https://www.haomeiwen.com/subject/altzvftx.html