当前位置: 首页 > news >正文

沧州网站域名注册服务公司网站上的图片一般多大合适

沧州网站域名注册服务公司,网站上的图片一般多大合适,百度seo关键词排名s,网站建设实训个人总结Android Intent:显式与隐式的使用 在 Android 开发中,Intent 是一个非常重要的组件,用于在不同组件(如 Activity、Service 和 Broadcast Receiver)之间传递消息和启动操作。Intent 主要分为两种类型:显式 I…

Android Intent:显式与隐式的使用

在 Android 开发中,Intent 是一个非常重要的组件,用于在不同组件(如 Activity、Service 和 Broadcast Receiver)之间传递消息和启动操作。Intent 主要分为两种类型:显式 Intent隐式 Intent。本文将详细介绍这两种 Intent 的使用方式,并通过实际代码示例帮助你更好地理解和应用。

Intent 的基本概念

Intent 是一个消息对象,用于请求执行某个操作。它可以在不同的组件之间传递数据,并且可以携带额外的信息(如 extras)。Intent 的主要用途包括:

  • 启动 Activity
  • 启动 Service
  • 发送广播

Intent 的核心属性包括:

  • Action:描述要执行的操作(如 Intent.ACTION_VIEWIntent.ACTION_DIAL 等)。
  • Category:描述 Intent 的类别(如 Intent.CATEGORY_LAUNCHERIntent.CATEGORY_DEFAULT 等)。
  • Data:描述操作的数据(如 URI)。
  • Extras:附加的数据,通常是一个 Bundle 对象。

显式 Intent

显式 Intent 是指明确指定目标组件的 Intent。它通过指定目标组件的类名(ComponentName)来启动特定的 Activity 或 Service。

显式 Intent 的使用场景

显式 Intent 通常用于以下场景:

  • 启动同一个应用内的其他 Activity。
  • 启动一个特定的 Service。
  • 从一个 Activity 启动另一个 Activity,并传递数据。

显式 Intent 的示例

启动同一个应用内的其他 Activity

假设你有一个应用,其中包含两个 Activity:MainActivityDetailActivity。你希望从 MainActivity 启动 DetailActivity,并传递一些数据。

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.btn_detail);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建显式 IntentIntent intent = new Intent(MainActivity.this, DetailActivity.class);// 添加额外的数据intent.putExtra("key", "Hello from MainActivity");// 启动 DetailActivitystartActivity(intent);}});}
}

DetailActivity.java

public class DetailActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_detail);// 获取传递的数据String data = getIntent().getStringExtra("key");// 显示数据TextView textView = findViewById(R.id.txt_detail);textView.setText(data);}
}

启动一个 Service

假设你有一个 MyService,你希望从 MainActivity 启动它。

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.btn_start_service);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建显式 IntentIntent intent = new Intent(MainActivity.this, MyService.class);// 启动 ServicestartService(intent);}});}
}

MyService.java

public class MyService extends Service {@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();// 服务创建时的逻辑}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// 服务启动时的逻辑return START_STICKY;}
}

隐式 Intent

隐式 Intent 是指不明确指定目标组件的 Intent。它通过定义一个操作(Action)和数据(Data)来描述要执行的操作,让系统根据 AndroidManifest.xml 中的配置找到匹配的组件来处理。

隐式 Intent 的使用场景

隐式 Intent 通常用于以下场景:

  • 启动其他应用中的组件(如打开浏览器、拨打电话、发送短信等)。
  • 在同一个应用内,根据操作类型启动不同的 Activity。

隐式 Intent 的示例

打开浏览器

假设你希望从 MainActivity 打开一个网页。

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.btn_open_browser);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建隐式 IntentIntent intent = new Intent(Intent.ACTION_VIEW);// 设置目标 URIintent.setData(Uri.parse("https://www.example.com"));// 启动浏览器startActivity(intent);}});}
}

拨打电话

假设你希望从 MainActivity 打开拨号界面。

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.btn_dial);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建隐式 IntentIntent intent = new Intent(Intent.ACTION_DIAL);// 设置目标 URIintent.setData(Uri.parse("tel:1234567890"));// 启动拨号界面startActivity(intent);}});}
}

发送短信

假设你希望从 MainActivity 打开短信界面。

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.btn_send_sms);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建隐式 IntentIntent intent = new Intent(Intent.ACTION_SENDTO);// 设置目标 URIintent.setData(Uri.parse("smsto:1234567890"));// 添加短信内容intent.putExtra("sms_body", "Hello from MainActivity");// 启动短信界面startActivity(intent);}});}
}

在同一个应用内使用隐式 Intent

假设你希望根据操作类型启动不同的 Activity。你可以在 AndroidManifest.xml 中为每个 Activity 配置 intent-filter

AndroidManifest.xml

<activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity><activityandroid:name=".DetailActivity"android:exported="true"><intent-filter><action android:name="com.example.action.VIEW_DETAIL" /><category android:name="android.intent.category.DEFAULT" /></intent-filter>
</activity>

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.btn_detail);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建隐式 IntentIntent intent = new Intent("com.example.action.VIEW_DETAIL");// 启动 DetailActivitystartActivity(intent);}});}
}

DetailActivity.java

public class DetailActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_detail);// 显示内容TextView textView = findViewById(R.id.txt_detail);textView.setText("Detail Activity");}
}

显式 Intent 与隐式 Intent 的对比

特性显式 Intent隐式 Intent
目标组件明确指定目标组件的类名不明确指定目标组件,通过 Action 和 Data 匹配
使用场景启动同一个应用内的其他组件启动其他应用的组件,或根据操作类型启动组件
安全性更安全,因为目标组件明确需要确保目标组件存在,否则会抛出异常
灵活性较低,只能启动已知的组件较高,可以根据操作类型动态启动组件

注意事项

隐式 Intent 的安全性

使用隐式 Intent

http://www.dtcms.com/a/513738.html

相关文章:

  • 北京招聘网站建设网站 自定义表单
  • 在中国怎么做国外网站阿里巴巴1688采购平台官网
  • 西安网站建站优化北京海淀区居家办公
  • 田园综合体建设网站wordpress变404
  • 做汽配网站需要多少钱自己做网站不如帮别人做运营
  • 站长之家appwordpress 前台插件
  • 做门窗安装用哪些网站找生意wordpress使用邮箱
  • 帮别人做彩票网站电脑公司网站源码php
  • 做 网站 技术支持 抓获黄冈做网站的公司
  • 贵州桥梁集团建设有限公司网站2017年到2018年建设的网站
  • 一个公司网站设计需求潍坊公司网站模板建站
  • 二维码制作标题seo是什么意思
  • 招聘网站建设规划书在韩国注册公司需要什么条件
  • 门户网站的建设要求网站建设哪家比较好
  • 晋城客运东站网站开发建设信息网的网站或平台登陆
  • 宿州官方网站建设企业信息查询app哪个最好
  • C++ bool 类型深度解析:从逻辑表示到内存优化
  • 手机网站开发最好用的框架深圳网站维护服务的公司
  • 做的网站企业融资方式有哪几种
  • 德惠网站列表网免费发布信息
  • 哪个网站可以做验证码兼职安徽飞亚建设网站
  • 个人网站icp什么网站可以发布广告
  • 奉化区城乡建设局网站网站设置301解除移动屏蔽
  • 网站 粘度惠阳做网站公司
  • 做动态图片的网站协会网站建站
  • 邯郸兄弟建站徐州建设工程交易网张周
  • 网站树状栏目有点临海钢结构设计网站
  • 做lt行业的人让我登网站外贸网站建站要多少钱
  • 南通企业网站制作网站推广工作计划
  • 中英双语网站模板做兼职网站设计