• intent和intentfilter


    intent 和intent Filters


    startActivity()的机制

    用到了IBinder ipc 用到了进程间通讯机制

    activity有四种LaunchMode

    当startActivity()的时候不知道启动的是不是和自己的activity在一个

    进程中。所以要用 IPC 进程间通讯来调用


    简单的使用方法 

    1

    A.class中

    1
    2
    3
    Intent intent = new Intent(A.this, B.class);
    intent.putExtra("sundy.demo""你好");
    startActivity(intent);

            B.class中

            

    1
    2
    3
    Intent intent = this.getIntent();
    String value = intent.getExtras().getString("key");
    Toast.makeText(this, value, 1).show();

    2

        A.class中

    1
    2
    3
    4
    Intent intent = new Intent();
    intent.putExtra("key""123");
    intent.setAction("com.wang.cn");
    startActivity(intent);

        B。

    class中

    .

    1
    2
    3
    Intent intent = this.getIntent();
    String value = intent.getExtras().getString("key");
    Toast.makeText(this, value, 1).show();

                要在mainfest中设置B。clas的activity中的intent-filter的action中设置

    1
    2
    3
    4
    5
    6
    7
    <activity android:name=".B" >
                <intent-filter>
                    <action android:name="com.wang.cn" />
     
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>


    必须写上 <category android:name="android.intent.category.DEFAULT" />这一句不然会报错。。

    3. 简单的打电话 代码

    1
    2
    3
    4
    5
    Intent intent = new Intent();
     
    intent.setAction(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:12345645555"));
    startActivity(intent);

        setAction和setData都是系統定義好 。這裡仅仅說下使用方法

    4.获取data中的值

        A。class中

    1
    2
    3
    4
    Intent intent = new Intent();
    intent.setAction("com.wang.cn");
    intent.setData(Uri.parse("tel:12345645555"));
    startActivity(intent);

        B。class中

    1
    2
    3
    4
    Intent intent = this.getIntent();
     
    String uri = intent.getDataString();
    Toast.makeText(this, uri, 1).show();

     setAction和setData都是系統定義好 。這裡仅仅說下使用方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <activity android:name=".Rose" >
                <intent-filter>
                    <action android:name="com.wang.cn" />
     
                    <category android:name="android.intent.cat  egory.DEFAULT" />
     
                    <data android:scheme="tel" >
                    </data>
                </intent-filter>
            </activity>

    5.startActivityForResult 方法

        A。

    class中

    1
    2
    3
    Intent intent = new Intent();
    intent.setClass(A.this,B.class);
    startActivityForResult(intent, 123);

            

        在A。

    clas的activity中 导入系统的onActivityResult方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == 321) {
                String value = data.getExtras().getString("name");
                Toast.makeText(this, value, 1).show();
            }
        }

        


    B.class中


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    button.setOnClickListener(new OnClickListener() {
     
                @Override
                public void onClick(View arg0) {
     
                    Intent intent =this.getIntent();
                    intent.putExtra("name""111111111");
                    setResult(321, intent);
                    finish();
                }
            });


    当resultCode一样的时候 回传值成功。。

    6.intent 传递 对象 类  等等


  • 相关阅读:
    【转】JavaScript里的this指针
    userscript.user.js 文件头
    css clearfix
    callback调用测试
    【个人】IIS Express 配置
    Js中 关于top、clientTop、scrollTop、offsetTop的用法
    【设为首页】/【收藏本站】
    JQuery插件开发
    Google Ajax Library API使用方法(JQuery)
    并发操作问题
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5209278.html
Copyright © 2020-2023  润新知