Android的隐式跳转

隐式跳转:跳转到应用外部
描述:不明确的指明要跳到那个页面,而是通过 条件筛选 确定目的页面
1.在代码文件中给intent添加setAction(“”)参数
java代码里还可以setData(“”)
示例:点击按钮跳转到百度/相机/电话/短信

       button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), "去隐式内部页面", Toast.LENGTH_LONG).show();
                Intent intent = new Intent();
                //自定义的条件用来跳到自己写的页面内部的app页面跳转
                intent.setAction("com.studay.base.study.jump.InnerJumpActivity");
                startActivity(intent);
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), "去百度", Toast.LENGTH_LONG).show();
                Intent intent = new Intent();
                //自定义的条件用来跳到自己写的页面内部的app页面跳转
                intent.setAction(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));
                startActivity(intent);
            }
        });

        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), "去相机", Toast.LENGTH_LONG).show();
                Intent intent = new Intent();
                //自定义的条件用来跳到自己写的页面内部的app页面跳转
                intent.setAction("android.media.action.STILL_IMAGE_CAMERA");
                startActivity(intent);
            }
        });

        button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), "去电话", Toast.LENGTH_LONG).show();
                Intent intent = new Intent();
                //自定义的条件用来跳到自己写的页面内部的app页面跳转
                intent.setAction(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:15239862553"));
                startActivity(intent);
            }
        });

        button5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), "去短信", Toast.LENGTH_LONG).show();
                Intent intent = new Intent();
                //自定义的条件用来跳到自己写的页面内部的app页面跳转
                intent.setAction(Intent.ACTION_SENDTO);
                intent.setData(Uri.parse("smsto:15239862553"));
                intent.putExtra("smsbody","你好啊,这是给小新的短信");
                startActivity(intent);
            }
        });

2.也是通过intent,在检索项目的manifest文件里给activity设置intent-fifter
具体是activity里的Intent设置条件,系统通过清单文件的Intent-fifter去找目标activity
筛选条件:1.Action :动作: 2.Category:类别 ,也是对intent一种额外描述
AndroidManifest.xml文件示例:

<activity
            android:name=".jump.InnerJumpActivity"
            android:exported="false">

            <intent-filter>
            <!--1.隐式跳转注意写这个-->
                <action android:name="com.studay.base.study.jump.InnerJumpActivity" />
                <!--2.隐式跳转注意写这个-->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

        </activity>

3.Data:数据,也是对intent一种额外描述

猜你喜欢

转载自blog.csdn.net/ShiXinXin_Harbour/article/details/127384034