Android 组件
文章平均质量分 54
源码下载: https://github.com/nai-chen/AndroidBlog
假装你是大灰狼
移动端工程师
展开
-
Android 文件系统与Android11 分区存储
一、Android文件系统Android文件系统分为 内部存储(internal storage) 和外部存储(external storage)1.1 用一个表格来直观对比一下两者:1.2 应用的私有路径应用在安装之后,系统会自动在内部存储和外部存储,分别建立应用的私有存储区域。内部存储 : data/user/0/packageName外部存储 : storage/emulated/0/android/data/packageName当应用卸载或者清除数据后,该区域文件会被删除。1转载 2021-03-19 11:09:51 · 6045 阅读 · 2 评论 -
Android 运行时动态申请权限
从Android6.0开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。同时系统默认为targetSdkVersion小于23的应用授予了所申请的所有权限。系统权限系统权限分为两类:正常权限和危险权限正常权限不会直接给用户隐私权带来风险。如果您的应用在其清单中列出了正常权限,系统将自动授予该权限。危险权限会授予应用访问用户机密数据的权限。如果您的应用在其清单中列出了正常权限...原创 2020-01-03 08:58:27 · 1101 阅读 · 0 评论 -
Android AsyncQueryHandler类
AsyncQueryHandler是用于ContentProvider上执行异步的CRUD操作。1. AsyncQueryHandler类AsyncQueryHandler类继承Handler类,通过封装ContentResolver来实现对ContentProvider的异步操作。public AsyncQueryHandler(ContentResolver cr) { supe...原创 2020-01-03 08:44:17 · 291 阅读 · 0 评论 -
Android AudioManager类
1. AudioManager类AudioManager是音频管理器,提供了音量控制与铃声模式相关操作。AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);2. 主要方法adjustVolume(int direction, int flags), 控制手机音量,调大或者调小一个单位...原创 2019-03-08 17:21:49 · 1744 阅读 · 0 评论 -
Android AlarmManager类
1. AlarmManager介绍类AlarmManager提供广播服务,使用PendingIntent调用Intent服务。AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);PendingIntent用于延迟的Intent,主要通过三种方式获取// 启动Activitypublic s...原创 2019-03-08 14:11:33 · 345 阅读 · 0 评论 -
Android SmsManager类
1. 发送短信SmsManager类用来发送短信public void sendTextMessage( String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)destinationAd...原创 2019-03-07 18:44:34 · 604 阅读 · 0 评论 -
Android ActivityManager类
1. ActivityManager类ActivityManager服务是对Activity管理、运行时功能管理和运行时数据结构的封装,进程(Process)、应用程序、服务(Service)、任务(Task)信息等。获取ActivityManager服务ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERV...原创 2019-03-07 15:31:22 · 3041 阅读 · 0 评论 -
Android TaskStackBuilder类
转载来源: https://www.jianshu.com/p/678e2322fd41场景:当应用处于后台时,默认情况下,从通知启动一个Activity,按返回键会回到主屏幕。但遇到这样的需求,按返回键时仍然留在当前应用。类似于微信、QQ等点击通知栏,显示Chat页,点击返回会回到主Activity。一在MainActivity点击按钮开启一个服务,并将Activity退出。服务中子线程睡...转载 2019-02-21 15:54:25 · 1037 阅读 · 1 评论 -
Android BroadcastReceiver简介
1. BroadcastReceiver类BroadcastReceiver用来接收广播,并在onReceive(Context, Intent)方法里面处理广播。public class DemoBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context cont...原创 2019-02-15 14:58:45 · 529 阅读 · 1 评论 -
Android WindowManager类
1. Window和WindowManagerWindow有三种类型,层级大的会覆盖在层级小的上面应用Window,对应Activity,层级范围是 1~99子Window,对应Dialog和PopupWindow,层级范围是 1000~1999系统Window,对应Toast层级范围是 2000~2999WindowManager继承ViewManager,可以显示类似悬浮窗效果,...原创 2019-02-14 14:32:30 · 963 阅读 · 1 评论 -
Android Parcel和Parcelable类
1. Parcel类Parcel主要用于在进程间通讯,传递数据。Parcel通过obtain()静态方法获取,数据的存储和读取主要通过writeXXX()和readXXX()实现,marshall()和unmarshall()将数据序列化和反序列化,最后recycle()回收资源。public byte[] writeValue() { Parcel data = Parcel.ob...原创 2019-02-14 13:26:08 · 2872 阅读 · 1 评论 -
Android FileProvider应用
Android 7.0 在应用间共享文件对于面向Android 7.0的应用,Android框架执行的StrictMode API政策禁止在您的应用外部公开file://URI。如果一项包含文件URI的intent离开您的应用,则应用出现故障,并出现FileUriExp...转载 2018-11-19 09:59:57 · 23765 阅读 · 1 评论 -
Android SystemClock类
SystemClock类用来获取时间。SystemClock.uptimeMillis()系统开机到当前的时间总数,单位是毫秒。但是,当系统进入深度睡眠(CPU休眠、屏幕休眠、设备等待外部输入)时间就会停止。SystemClock.elapsedRealtime()和SystemClock.elapsedRealtimeNanos()系统开机到当前的时间总数。它包括了系统深度睡眠的...原创 2018-11-11 14:37:41 · 2633 阅读 · 0 评论 -
Android Handler类
1. Handler类Handler类被用于异步消息处理线程,常被用来更新UI线程。一般来说我们会在主线程中创建一个Handler的匿名内部类,然后重写它的handleMessage方法来处理我们的UI操作。 private final static int UPDATE_TIME = 1; private TextView mTv; private Handler mHan...原创 2018-11-11 14:13:01 · 2188 阅读 · 1 评论 -
Android AsyncTask类
1. AsyncTask类AsyncTask,异步任务,用于在后台线程运行一个任务,在UI线程上修改界面。AsyncTask<Params, Progress, Result>需要确认三个泛型类型,如果类型不被使用,使用Void类型。Params,启动任务执行的输入参数Progress,后台任务执行的百分比Result,后台运行结果例如需要下载一个图片并显示原创 2018-11-11 11:40:48 · 755 阅读 · 1 评论 -
Android Environment类
1. 外部存储状态通过静态方法Environment.getExternalStorageState()来获取外部存储状态。字段含义Environment.MEDIA_REMOVED存储媒体被移除Environment.MEDIA_UNMOUNTED存储媒体没有挂载Environment.MEDIA_CHECKING正在检查存储媒体Environme...原创 2018-10-31 14:21:23 · 1116 阅读 · 0 评论 -
Android Build类
1. Build类获取手机信息字段含义Build.BOARD主板Build.BRAND系统定制商Build.CPU_ABIcpu指令集Build.DEVICE设备参数Build.DISPLAY显示屏参数Build.FINGERPRINT硬件名称Build.ID修订版本列表Build.MANUFACTURER硬件制造商...原创 2018-10-31 13:39:39 · 704 阅读 · 0 评论 -
Android Vibrator类
相关文章Android BatteryManager类Android TelephonyManager类Android ConnectivityManager类1. Vibrator类Vibrator类用于控制手机震动。Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);需要权限<uses-pe...原创 2018-10-31 11:23:22 · 1062 阅读 · 1 评论 -
Android ConnectivityManager类
1. ConnectivityManager类ConnectivityManager类用来判断网络服务ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);NetworkInfo networkInfo = cm.getActiveNetworkInfo();通过Net...原创 2018-10-31 11:04:54 · 898 阅读 · 1 评论 -
Android TelephonyManager类
1. TelephonyManager类TelephonyManager类用来读取手机信息。TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);TelephonyManager需要添加权限<uses-permission android:name=&amp原创 2018-10-31 09:58:40 · 490 阅读 · 1 评论 -
Android BatteryManager类
1. BatteryManager类获取电量信息需要注册一个BroadcastReceiver。IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);registerReceiver(mReceiver, filter);在onReceive(Context context, Intent intent...原创 2018-10-30 17:57:45 · 6631 阅读 · 1 评论 -
Android DisplayMetrics类
1. DisplayMetrics类获取屏幕的宽高和密度DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);主要属性widthPixels,屏幕宽度(像素)heightPixels,屏幕高度(像素)densityDpi,每英寸包含像素个数de...原创 2018-10-30 17:23:47 · 345 阅读 · 1 评论 -
Android SharedPreferences应用
1. SharedPreferences类SharedPreferences存储方式是轻量级数据的一种方式,使用键值对提交和保存数据,以Xml格式保存在本地的/data/data//shares_prefs文件夹下。一般通过getSharedPreferences(String name, int mode)方法来获取对象,name为数据文件名,系统会添加.xml后缀。2. 提交数据...原创 2018-08-27 15:51:45 · 438 阅读 · 1 评论 -
Android SQLite应用
1. SQLiteOpenHelper类安卓提供了SQLiteDatabase类来管理SQLIte,并提供了帮助类SQLiteOpenHelper,调用getReadableDatabase()或getWritableDatabase()来获取数据库。这两种都会调用getDatabaseLocked()方法。final int version = db.getVersion();if (...原创 2018-08-27 11:09:49 · 332 阅读 · 1 评论 -
Android 文件操作
1. assets目录下文件可调用Context.getAssets()方法获得AssetManager,然后调用open()方法读取文件,fileName是文件名称。InputStream inputStream = getAssets().open(fileName);WebView可通过loadUrl()直接导入文件。WebView.loadUrl("file:///and...原创 2018-08-24 18:13:23 · 943 阅读 · 1 评论 -
Android IntentService应用
IntentService应用IntentService继承Service,但又不同于普通的Service。Service是用于后台服务的,但它仍然在主线程中运行,耗时的逻辑和操作都不适合在Service中运行,IntentService弥补了这一缺点。IntentService源码,public abstract class IntentService extends Servi...原创 2018-08-16 18:08:40 · 296 阅读 · 1 评论 -
Android Notification简介
1. 创建通知使用Notification.Builder来创建,低版本的可以使用NotificationCompat.Builder来替代。Notification notification = new Notification.Builder(this) .setSmallIcon(R.drawable.small) .setConten...原创 2018-08-16 17:39:54 · 817 阅读 · 1 评论 -
Android Intent应用
1. 前言Intent主要用于应用程序内部的activity, service和broadcast receiver之间的交互。2. Intent的属性action属性,用来表现意图的行动一个Intent Filter可以包含多个action,表示该activity能接受的动作。启动Activity的action值为 android.intent.action.MAIN。......原创 2018-08-16 14:03:34 · 1028 阅读 · 1 评论 -
Android Service简介
1. 前言Service通常被用来做一些后台操作,并且不依赖于界面。2. Service调用自定义DemoService需要继承Service,并且在配置文件中声明。<service android:name=".DemoService" /&a原创 2018-08-15 17:29:13 · 406 阅读 · 1 评论 -
Android ContentProvider简介
1. 前言ContentProvider为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据。2. 读取通讯录常通过ContentProvider来读取通讯录的信息。Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, n...原创 2018-08-15 15:10:56 · 1150 阅读 · 1 评论 -
Android Fragment简介
1. 前言Fragment是Android3.0后引入的一个新的API,为了适应大屏幕的平板电脑。使用Fragment可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理。2.Fragment的生命周期Fragment相对于Activity多了onAttach()和onDetach(),用于加载和释放资源。 3. Framgment加载方式静态加载在布局文件中直接......原创 2018-08-15 11:18:10 · 274 阅读 · 1 评论 -
Android Activity简介
Android Activity生命周期1. Activity生命周期Activity从onCreate()开始,到onDestroy()结束。 首次打开Activity,依次调用onCraete()、onStart()和onResume()。 选择Home键,依次调用onPause()和onStop()。 再次打开Activity,依次调用onRestart()、onSt......原创 2018-08-14 17:36:06 · 1816 阅读 · 1 评论