首页 > 社交 > 科普中国

关于Android

常驻编辑 科普中国 2022-09-25 漏洞   生命周期   函数   组件   布局   加载   界面   参数   代码   方法

首先,在Fragment中定义接口,并让Activity实现该接口,如下:8fJ拜客生活常识网

public interface OnFragmentInteractionListener {
    void onItemClick(String str);  
}

接下来,在Fragment的onAttach()中,将参数Context强转为OnFragmentInteractionListener对象传递过去8fJ拜客生活常识网

public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof OnFragmentInteractionListener) {
        mListener = (OnFragmentInteractionListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement OnFragmentInteractionListener");
    }
}
  • Activity向Fragment传递数据

在创建Fragment的时候,可以通过setArguments(Bundle bundle)方式将值传递给Activity,如下:8fJ拜客生活常识网

public static Fragment newInstance(String str) {
        FragmentTest fragment = new FragmentTest();
        Bundle bundle = new Bundle();
        bundle.putString(ARG_PARAM, str);
        fragment.setArguments(bundle);//设置参数
        return fragment;
    }

6)Fragment && Fragment数据交互8fJ拜客生活常识网

Fragment和Fragment间数据交互,应该也是会经常用到的。可使用宿主Activity做传递媒介,原理其实也是通过使用onActivityResult回调,完成Fragment && Fragment的数据交互,这其中有两个比较重要的方法:Fragment.setTargetFragment、getTargetFragment()8fJ拜客生活常识网

在 FirstFragment 中,通过setTargetFragment来连接需要交互的Fragment:8fJ拜客生活常识网

secondFragment.setTargetFragment(FirstFragment.this, REQUEST_CODE);

接着实现onActivityResult,处理传递过来的数据:8fJ拜客生活常识网

@Override  
   public void onActivityResult(int requestCode, int resultCode, Intent data) {  
       super.onActivityResult(requestCode, resultCode, data);  
       if(resultCode != Activity.RESULT_OK){  
           return;  
       }else{  
           Integer str = data.getIntExtra("key",-1);  
           //处理数据...
       }  
   }

在 SecondFragment 中调用sendResult()方法,回传数据给 FirstFragment:8fJ拜客生活常识网

private void sendResult(int resultOk) {
	if (getTargetFragment() == null) {
		return
	} else {
		Intent intent = new Intent();
		intent.putExtra("key", 520);
		getTargetFragment().onActivityResult(FirstFragment.REQUEST_CODE, resultOk, intent)
	}
}

1.3 Android Fragment 漏洞产生的原因

Android是基于Linux开放性内核的操作系统,是Google公司在2007年发布的手机操作系统8fJ拜客生活常识网

Google Android 4.3及之前版本的沙盒环境存在安全漏洞,该漏洞影响任何使用PreferenceActivity类的应用,包括Settings, Gmail, Google Now, Dropbox, Evernote。攻击者可利用此漏洞执行任意代码,从而绕过Android沙盒,执行未授权操作8fJ拜客生活常识网

Android 4.3及之前版本在应用中采用不安全的 PreferenceActivity 类实施方式的开发者。在这种情况下,这些类会让人利用 Fragment 实现注入攻击,这种实现方式让恶意的外部应用可以加载原本不公开的 Fragment。例如,通过导出的PreferenceActivity的子类,没有正确处理Intent的extra值。攻击者可绕过限制访问未授权的界面8fJ拜客生活常识网

从 2017 年 3 月 1 日起,Google Play 开始禁止发布存在以下情况的新应用或应用更新:其 PreferenceActivity 类可能有安全漏洞,让攻击者可以利用 Fragment 实现注入攻击。请参阅 Play 管理中心内的通知。在 Play 管理中心显示的截止日期过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除8fJ拜客生活常识网

产生的原因

相关阅读:

  • 不锈钢水槽漏洞怎么补
  • 用卢布买天然气存“漏洞”?企业竟可“绕开”制裁购买俄
  • 经过两个交易日之后,金州勇士目前的阵容名单如何?有什么
  • 对于疫情在极短时间内复现的新情况,要快上加快,堵上漏洞
  • 满是漏洞!电商平台;帮;未成年无限制游戏代充
  • 事以密成!高手表面人畜无害,实则鹰视狼顾
  • 直面问题
  • 什么是CSRF
  • 常见安全漏洞修复方法
  • 储户近200万巨款存入交通银行不翼而飞 人脸识别漏洞成
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。