一篇文章展示功能强大的 Intent 的主要用途

Intent

连接Activity、Service、BroadcastReceiver形成一个APP

在这里插入图片描述

Intent的基本应用:

  1. Activity之间的传递
  2. 开启一个Service,比如后台下载
  3. 传递广播

Intent对象的属性

Componentname属性

  • setComponent()
    第一个参数:应用的包名
    第二个参数:要启动的组件的类名
Intent intent=new Intent();
ComponentName componentName=new ComponentName("com.example.intent","com.example.intent.DetailActivity");
intent.setComponent(componentName);
startActivity(intent);

MainActivity :

public class MainActivity extends AppCompatActivity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.btn1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                ComponentName componentName=new ComponentName("com.example.intent","com.example.intent.DetailActivity");
                intent.setComponent(componentName);
                startActivity(intent);
            }
        });
    }
}

DetailActivity:

public class DetailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
    }
}

Action和Data属性

  • Action指定那个将要执行的动作
  • Data指定具体的数据

例如:
在这里插入图片描述
因此,一般结合使用

具体案例:实现打电话、发短信功能

可以参考下面这篇文章:
https://blog.csdn.net/qq_44824148/article/details/106853990

Action和Category属性

  • Action指定那个将要执行的动作
  • Category对动作类别进行指定
具体案例:按键实现返回主页面
protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_index);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        Button button=(Button)findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.setAction(intent.ACTION_MAIN);
                intent.addCategory(intent.CATEGORY_HOME);
                startActivity(intent);
            }
        });
    }

Extras属性

  • 应用于多个Activity进行数据交换
  • putExtras()、getExtras()

Flags属性

  • 程序启动之后如何处理
    intent.setFlags (intent.FLAG_ ACTIVITY_NO_HISTORY);相当于重新启动

Intent种类

显式Intent

创建Intent对象时指定目标组件名称启动目标组件
在这里插入图片描述

隐式Intent

创建Intent对象时指定action、category、dataAndroid系统自动匹配目标组件

Intent intent=new Intent();
intent.setAction(intent.ACTION_ VIEW);
intent.setData(Uri.parse("http://www.mingribook.com"));
startActivity(intent);

显式Intent和隐式Intent的区别

显式Intent :

  • 直接指定目标组件的名称
  • 多用于在应用程序内部传递信息

隐式Intent :

  • 不会用组件名称定义要激活的目标组件
  • 多用于在不同应用程序之间传递消息
  • 过滤器
    在这里插入图片描述

通过< intent-filter >标记在AndroidManifest.xml文件中配置

<intent-filter>
	<action...../>
	<categor...../>
	<data...../>
</intent-filter>
具体案例:跳转到另一个Activity,实现全屏预览图片

具体点击下面链接
https://blog.csdn.net/qq_44824148/article/details/106895386

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章