安卓逆向基础-四大组件之Activity

admin 2024年1月9日19:15:17评论22 views字数 2786阅读9分17秒阅读模式
各位少侠,别来无恙。我是东方隐侠KeyChain小队的In1t,在2023年的沉淀中,我们小队系统发展了二进制安全和逆向工程能力,沉淀了一系列经验文档。相信大家有关注到,千里和Freebuf培训助教小姐姐最近在密集推送我们小队经验输出活动,欢迎参加。
今天是我们安卓逆向系列开题的第一篇,将为大家讲述安卓四大组件中的Activity用法与基础,以便我们后续对安卓逆向的深入研究。
Activity介绍
安卓逆向基础-四大组件之Activity

Activity是Android的四大组件之一,同时它也是Android应用中最常见的组件之一。

一个应用通常会有多个Activity,它主要负责与用户进行交互,并向用户呈现出应用此时的状态,不同的Activiy呈现给用户不同的操作体验。

每当我们打开一个Android的app,我们都会接触到它,相当于一个屏幕,上面承载着我们所能看到和接触到的不同的组件。

基本用法
安卓逆向基础-四大组件之Activity

1.布局中的元素

button

<Button    android:id="@+id/button_1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="Click Me" />  

@+id/button_1:为布局元素的唯一标识符

match_parent:当前元素的宽度匹配父元素

wrap_contnt:当前元素的高度刚好包住其中的内容

text:指定元素中显示的内容

在布局文件(layout.xml)中添加控件后,通过setContentView(R.layout.first_layout)给当前的活动添加布局


2.在AndroidManifest中声明

<activity      android:name=".FirstActivity"      android:exported="true"     android:label="This is FirstActivity">      <intent-filter>          <action android:name="android.intent.action.MAIN"/>          <category android:name="android.intent.category.LAUNCHER"/>      



intent-filter>  



activity>

android:name=".FirstActivity":这个属性指定了活动的类名。在这里,活动类的名称是 FirstActivity,前面的点 . 表示这个活动类是相对于应用程序包名的相对路径

android:exported="true":这个属性指示活动是否可以被其他应用程序访问。当设置为 true 时,其他应用程序可以启动这个活动

android:label="This is FirstActivity":这个属性用于设置活动的标签或标题,它通常会在应用程序的用户界面中显示给用户

元素:这是一个子元素,用于定义活动可以响应的 Intent。在这个情况下,这个 元素定义了两个操作:

  1. :这指示这个活动是应用程序的主要入口点(Main Activity)。当用户启动应用程序时,系统将启动具有 MAIN 操作的活动。
  2. :这指示这个活动是应用程序的启动器(Launcher Activity)。这是应用程序启动时的默认活动。 在 Android 中, 元素用于描述活动可以响应哪些 Intent。

android.intent.category.DEFAULT 是一个常见的 Intent 分类,表示这个活动可以响应普通的(默认的)Intent。

通常情况下,如果您的活动没有指定任何特定的 Intent 分类,它会自动包括 android.intent.category.DEFAULT 分类,以表示它可以响应一般的 Intent 请求


3.在活动中使用元素

Button button_1 = findViewById(R.id.button_1);  button_1.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {          Toast.makeText(FirstActivity.this, "You click me", Toast.LENGTH_LONG);      }  });

findViewById通过我们之前注册的id来查找对应的元素,返回值为View对象 setOnClickListener注册按钮的监听器


4.为当前活动添加Menu





  <menu xmlns:app="http://schemas.android.com/apk/res-auto"      xmlns:android="http://schemas.android.com/apk/res/android">        <item          android:id="@+id/item_0"          android:title="@string/item_0" />      <item          android:id="@+id/item_1"          android:title="@string/item_1" />  



menu>

可以手动编写或者通过拖动添加该布局元素 接下来通过Ctrl + o来重写onCreateOptionsMenuonOptionsItemSelected,其中 onCreateOptionsMenu用于查找menu资源文件,并显示 onOptionsItemSelected用于将按钮与对应的功能相绑定

@Override  public boolean onCreateOptionsMenu(Menu menu) {            getMenuInflater().inflate(R.menu.main, menu);      return super.onCreateOptionsMenu(menu);  }    @Override  public boolean onOptionsItemSelected(@NonNull MenuItem item) {      switch (item.getItemId()) {          case R.id.item_0:              Toast.makeText(TAG, "you click item_0", Toast.LENGTH_LONG).show();              break;          case R.id.item_1:              Toast.makeText(TAG, "you click item_1",Toast.LENGTH_LONG).show();              break;          default:      }      return super.onOptionsItemSelected(item);  }

5.销毁活动

通过finish()或者点击返回键销毁当前活动,返回上一活动或者退出进程

Intent讲解
安卓逆向基础-四大组件之Activity
Activity的生命周期
Activity的启动模式
END

原文始发于微信公众号(东方隐侠安全团队):安卓逆向基础-四大组件之Activity

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月9日19:15:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向基础-四大组件之Activityhttp://cn-sec.com/archives/2379509.html

发表评论

匿名网友 填写信息