activity

Android 应用之安全开发

前提是你 提交于 2019-11-29 19:11:04
原文链接:https://www.jianshu.com/p/3b22859b2677 大佬:“这个 APP 破解下,可以兼容客户已出货的产品” 我:“这个不合适吧” 大佬:“这个客户对我们很重要” 我:“好吧” 然后,就是通过反编译某 APP ,分析蓝牙交互协议,在新的 APP 中去兼容已出货的设备,达到无缝对接。 –这种场景在开发中还是比较经常碰到的。 一、引言 随着移动互联网向社会生活的各个领域渗透,APP 的使用越来越广泛。但 Android 系统由于其开源的属性,市场上针对开源代码定制的 ROM 参差不齐(特别中国区域),在系统层面的安全防范和易损性都不一样,Android 应用市场对 APP 的审核相对 iOS 来说也比较宽泛,市场上一些主流的 APP 虽然多少都做了一些安全防范,但由于大部分 APP 不涉及资金安全,所以对安全的重视程度不够;而且由于安全是门系统学科,绝大部分 APP 层的开发人员缺乏对 APP 安全意识及措施,导致被有心者有机可乘。 Android 开发是当前最火的话题之一,但很少开发者会讨论这个领域的安全问题,除了专业从业者,但移动应用安全隐患也给发展带来了挑战。 开发团队通常将精力集中在产品设计、功能实现、用户体验和系统效率等方面,而很少考虑安全问题; 与一切都是集中管理的 iOS 相比,Android 提供了一种开放的环境,在获得了灵活性

Android中设置全屏的方法

浪尽此生 提交于 2019-11-29 19:06:17
在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示,一般情况下,可以通过两种方式来设置全屏显示效果。其一,通过在代码中可以设置,其二,通过manifest配置文件来设置全屏。 代码: //设置无标题 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 设置无标题和设置全屏的两段代码要放置在 setContentView(R.layout.main); 这段代码的前面。要不然会报错。 在manifest配置文件中设置: 在相应的Activity中节点中添加属性:android:theme=" @android :style/Theme.NoTitleBar.Fullscreen" 即可以设置某个Activity全屏显示。若设置成 android:theme=" @android :style/Theme.NoTitleBar" 即是只是设置成无标题状态。 来源: oschina 链接: https://my.oschina.net/u/1053973/blog/132013

Window和WindowManager(二)

守給你的承諾、 提交于 2019-11-29 18:41:15
一、Window创建过程: View不能单独存在,必须依附在Window上 如何创建一个Window窗口: 通过WindowManager创建, Window创建的具体实现是在WindowManagerService中, 而 WindowManager 与WindowManagerService 的交互是一个IPC过程。 1、Activity的Window创建 Activity的启动最终是由ActivityThead的performLaunchActivity()完成启动,通过类加载器创建Activity对象。 在performLaunchActivity()中调用activity的attach方法 #ActivityThread private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { ...... if (activity != null) { Context appContext = createBaseContextForActivity(r, activity); CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager()); Configuration config

【学习笔记】Window和WindowManager知识点

允我心安 提交于 2019-11-29 18:39:44
正文: (网络盗图,侵删) (网络盗图,侵删) 1. Window是一个抽象类,其实现是PhoneWindow。WindowManager是外界访问Window的入口。Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。Android中所有视图都是通过Window来呈现的,Activity、Dialog和Toast实际上都附加在Window上。因此Window实际是View的直接管理者。 2. Window有三种类型,分别是应用Window、子Window和系统Window。应用类Window对应着一个Activity。子Window不能单独存在,需要附属在特定的父Window之中,比如常见的一些Dialog。系统Window是需要声明权限才能创建的Window,比如Toast和系统状态栏。 3. Window是分层的,层级大的会覆盖在层级小的Window上面。层级范围顺序:系统Window>子Window>应用Window。层级范围对应WindowManager.LayoutParams的type参数。如果需要最大层级,可使用系统层级的type,但同时需要声明权限。 4. WindowManager继承自ViewManager。提供了三个常用方法:addView

Android开机启动流程初探

故事扮演 提交于 2019-11-29 18:37:25
l Init 进程 Android 系统在启动时首先会启动 Linux 系统,引导加载 Linux Kernel 并启动 init 进程。 Init 进程是一个由内核启动的用户级进程,是 Android 系统的第一个进程。该进程的相关代码在 platform\system\core\init\init.c 。在 main 函数中,有如下代码: open_devnull_stdio(); log_init(); INFO("reading config file\n"); init_parse_config_file("/init.rc"); /* pull the kernel commandline and ramdisk properties file in */ import_kernel_cmdline(0); get_hardware_name(hardware, &revision); snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware); init_parse_config_file(tmp); 这里会加载解析 init.rc 和 init. hardware .rc 两个初始化脚本。 *.rc 文件定义了在 init 进程中需要启动哪些进程服务和执行哪些动作。其详细说明参见 platform\system\core

第八章 理解Window和WindowManager

余生长醉 提交于 2019-11-29 18:34:49
Window是一个抽象类,它的具体是现实 PhoneWindow ,通过 WindowManager 就可以创建Window。WindowManager是外界访问Window的入口,但是Window的具体实现是在 WindowManagerService 中,WindowManager和WindowManagerService的交互是一个IPC的过程。所有的视图例如Activity、Dialog、Toast都是附加在Window上的。 8.1 Window和WindowManager (1). 通过WindowManager添加View 的过程:将一个Button添加到屏幕坐标为(100,300)的位置上。 mFloatingButton = new Button( this ); mFloatingButton.setText( "test button" ); mLayoutParams = new WindowManager.LayoutParams(LaytouParams.WRAP_CONTENT,LaytoutParams.WRAP_CONTENT, 0 , 0 ,PixelFormat.TRANSPARENT); //0,0,分别是type和flags参数,在后面分别配置了。 mLaytouParams.flags = LayoutParams.FLAG_NOT

理解Window和WindowManager

流过昼夜 提交于 2019-11-29 18:34:03
Window表示一个窗口的概念,Window是一个抽象类,具体实现是PhoneWindow。创建一个Window很简单,只需要通过WindowManager即可完成。WindowManager是外界访问Window的入口,Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。Android中所有视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,它们的视图实际上都是附加在Window上的,因此Window是View的直接管理者。 Window Window有三种类型,分别是 类型 实例 层级 应用Window Activity 1~99 子Window Dialog 1000~1999 系统Window Toast 2000~2999 WindowManager WindowManger继承了ViewManager,提供了三个功能 addView updateViewLayout removeView Window的内部机制 WIndow是一个抽象的概念,每一个Window都对应着一个View和ViewRootImpl,Window和View通过ViewRootImpl来建立联系,因此Window并不是实际存在的,它是以View的形式存在

Android源码分析之理解Window和WindowManager

孤街浪徒 提交于 2019-11-29 18:32:00
Window和WindowManager概述 Window是一个抽象类,它的具体实现是PhoneWindow,创建一个Window通过WindowManager 就可以完成。WindowManager是外界访问Window的入口,它的具体实现在WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC的过程。Android中所有的视图都是通过Window来呈现的,无论是Activity,Dialog还是Toast,Window实际上是View的直接管理者。单击时间由Window传递给DecorView,然后DecorView再传递给我们的View,就连Activity设置视图的方法setContentView底层也是通过Window来完成的。 WindowManager继承于ViewManager: public interface WindowManager extends ViewManager ViewManager中有3个抽象的方法: public interface ViewManager { /** * Assign the passed LayoutParams to the passed View and add the view to the window. * <p>Throws {

Android 简单实现透明Activity

ⅰ亾dé卋堺 提交于 2019-11-29 17:51:19
Activiy透明化一般用于查询、筛选功能,使查询模块与实际的业务模块耦合度降低,便于后期维护。 实现效果 布局 activity_top.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:text="demo top" android:layout_width="match_parent" android:layout_height="200dp" android:background="#99afdfaa" /> </LinearLayout> 样式 <style name="MyTransparent" parent="AppTheme"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="android

面试的准备

筅森魡賤 提交于 2019-11-29 17:13:55
一、Android 基础面试   1.Activity异常的生命周期处理     @Override  public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState);  }  @Override  protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState);  }  异常或者系统内存不足会调用该方法  2.Activity之间的通信  Intent/Bundle   3.Activity向Fragment传递数据    1).Bundle之间通信      fragment.setArguments------>Activity与Fragment之间的通信桥梁         getArguments()---->获得Bundle对象 ,还是key-value的模式         2).直接在Activity之间定义               在onAttach绑定时候