安卓1108_四大组件-BroadCastReceiver广播接收者 ip拨号 短信拦截 开机自启 sd卡状态 APP安装监测 有序 无序广播 帧动画 国际化 style和theme
来源:互联网 发布:java安装时校验出错了 编辑:程序博客网 时间:2024/05/10 22:27
广播接收者
浏览器的书签页面,谷歌配置成了singleTop谷歌把浏览器的浏览页面配置成singleTask,节省内存singleInstance来电页面broadcastreceiver
ip拨打电话 加权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> <intent-filter > <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> </intent-filter>1.保存手机号 //1.获取SharedPreferences, SharedPreferences preferences = getSharedPreferences("config", 0); //2.通过SharedPreferences对象的edit方法获取一个Editor对象 Editor edit = preferences.edit(); //3.往Editor对象中存放数据,键值对 edit.putString("num", phonenum); //4.提交Editor对象 edit.commit();2.修改手机号 //获取拨打的号码 String resultData = getResultData(); //1.通过Context对象获取一个SharedPreferences对象 SharedPreferences preferences = context.getSharedPreferences("config", 0); //2.使用SharedPreferences对象获取存放的数据,键值对的方式获取 String st = preferences.getString("num", ""); //判断拨打的电话是否是长途 if(resultData.startsWith("0")){ setResultData(st+resultData); }
在intent-filter 配置data,不需要加权限只有两种情况:
1.sd卡的状态 需要配置<data android:scheme="file"/>,不加权限 <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> <action android:name="android.intent.action.MEDIA_MOUNTED" /> String action = intent.getAction(); if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) { System.out.println("SD卡被卸载"); } else if ("android.intent.action.MEDIA_MOUNTED".equals(action)) { System.out.println("SD卡挂载"); }2.监听app安装和卸载状态,配置<data android:scheme="package"/>,不加权限String action = intent.getAction(); if ("android.intent.action.PACKAGE_INSTALL".equals(action)) { System.out.println("应用被安装"); } else if ("android.intent.action.PACKAGE_REMOVED".equals(action)) { System.out.println("应用被卸载"); } else if ("android.intent.action.PACKAGE_ADDED".equals(action)) { System.out.println("应用被安装了"); }3.用adb强制卸载adb uninstall + 应用包名
………………………………………………
短信拦截 加权限
配置清单文件,添加权限<uses-permission android:name="android.permission.RECEIVE_SMS"/> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter>//[1]获取是谁发送短信 和短信的内容Object[] objects = (Object[]) intent.getExtras().get("pdus"); for (Object object : objects) { //[2]创建smsmessage实例 获取短信的相关内容 SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) object); //[3]获取短信的内容 String messageBody = smsMessage.getMessageBody(); String address = smsMessage.getOriginatingAddress(); }4.0后想让广播接收者生效 要求 1)要求第一次安装应用的时候必须有界面2)在设置页面有一个强行停止按钮,当用户点击了强行停在按钮,这时候广播接收者不生效 在4.0之前没有这样的安全设计.
手机重启 加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/><intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter>1.接收信息Intent intent2 = new Intent(context, MainActivity.class);//当在广播里开启Activity时,不会自动新建任务栈,因为Activity维护任务栈intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent2);2.在主方法设置使后退键失效public void onBackPressed() { //注释掉 后退键无效 //super.onBackPressed();}
特殊的广播接收者,不需要获取权限
有些操作特别频繁的广播事件 在清单文件里面注册无效 比如屏幕的锁屏和解锁
配置广播接收者的方式
1)在清单文件里面注册
2)动态的使用代码的方式去注册
当动态的注册广播接收者的时候 当Activit销毁的时候报如下错误
1.10-11 08:38:06.287: E/ActivityThread(2459): Activity com.itheima.screen.MainActivity has leaked IntentReceiver com.itheima.screen.ScreenReceiver@b64f3f48 that was originally registered here. Are you missing a call to unregisterReceiver()?
1.在MainActivity动态注册@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); screen = new Screen(); //创建意图过滤器 IntentFilter filter = new IntentFilter(); //在意图过滤器里添加action filter.addAction("android.intent.action.SCREEN_OFF"); filter.addAction("android.intent.action.SCREEN_ON"); //动态去注册广播接收者 this.registerReceiver(screen, filter);}//当activity销毁时要取消广播接收者@Overrideprotected void onDestroy() { unregisterReceiver(screen); super.onDestroy();}2.接收广播public class Screen extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if("android.intent.action.SCREEN_OFF".equals(action)){ System.out.println("锁屏"); }else if("android.intent.action.SCREEN_ON".equals(action)){ System.out.println("开屏"); } }}
自定义广播
1.有序广播 一级一级往下传播,getResultData();sendOrderedBroadcast2.无序广播 类似新闻联播sendBroadcast
01无序广播
1.发送无序广播Intent intent = new Intent();intent.setAction("com.heima.app");intent.putExtra("pp", "妈妈");sendBroadcast(intent);2.接收无序广播String app = intent.getStringExtra("pp");Toast.makeText(context, "zai 按是"+ app, 1).show();
02有序广播
设置优先级priority<receiver android:name="com.heima.rice2.ProvincesReceiver" > <intent-filter android:priority="800" > <action android:name="com.heima.aa" /> </intent-filter></receiver>1.发送有序广播Intent intent = new Intent();intent.setAction("com.heima.aa");sendOrderedBroadcast(intent, null, null, null, 4, "习大大给每位村民发送大米1000斤", null);2.接收有序广播的内容String data = getResultData();// 修改广播的内容setResultData("习大大给每位村民发送大米200斤");//强制停止有序广播,终止下传abortBroadcast(); 3.有序和无序广播特点 无序广播不可以被终止,数据不可以被修改,有序广播可以被终止数据可以被修改.终止 abortbroadabortBroadCast:阻止其他接收者接收这条广播,类似拦截,只有有序广播可以被拦截
特殊的广播接收者
屏幕的锁屏和解锁 在清单文件注册无效配置广播接收者的两种方式:1.在清单文件注册2.用代码的方式去注册 this.registerReceiver();销毁时取消注册广播接收者OnDestory当广播接收者退出时,要取消注册 unregisterceiver();
Android样式 style
[1]什么时候使用样式 当几个页面或者是几个控件长得都差不多的时候 我们就可以抽出一个样式
[2]定义样式 ,在res目录下的values下的style.xml里面定义一个样式
<style name="my_style"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#ccff00</item> <item name="android:textSize">40sp</item></style>
[3]应用样式
<TextView style="@style/my_style" android:text="嘿嘿" />
[4]主题 定义的方式和样式是一样的
[5]主题和样式的区别
★应用的范围不同,主题的应用比较大,样式作用范围比较小一般作用在控件上,主题一般应用在当前清单文件application节点下或者Activity节点上.★定义样式和主题不是必须在res下values下的style.xml上定义,可以在values下任意一个xml上定义<style name="MyTheme"> <item name="android:background">#abcdef</item></style><application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/MyTheme" ></application>主题和样式的区别: 应用的范围不同,主题应用大,样式应用范围小主题的优先级低于样式
国际化 简称I18N
实现步骤[1]在res下创建一个目录 values-en 在这个目录里面实现对应的翻译
安卓中的帧动画
DRAWABLE Animation 帧动画就是加载一些列的图片资源 一个接一个的加载
实现的步骤 [1]在res下创建一个drawable目录 [2]在这个目录里面创建一个资源文件 并把图片导进去 格式如下<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/girl_1" android:duration="200" /> <item android:drawable="@drawable/girl_2" android:duration="200" /> <item android:drawable="@drawable/girl_3" android:duration="200" /> <item android:drawable="@drawable/girl_4" android:duration="200" /> <item android:drawable="@drawable/girl_5" android:duration="200" /> <item android:drawable="@drawable/girl_6" android:duration="200" /> <item android:drawable="@drawable/girl_7" android:duration="200" /> <item android:drawable="@drawable/girl_8" android:duration="200" /> <item android:drawable="@drawable/girl_9" android:duration="200" /> <item android:drawable="@drawable/girl_10" android:duration="200" /> <item android:drawable="@drawable/girl_11" android:duration="200" /></animation-list>[3]在mainActivity里面写对应的业务逻辑 1.在activity中新建ImageView控件 <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 2.在onCreate中 //找到控件 ImageView iv = (ImageView) findViewById(R.id.iv); //设置iv的背景资源 注意这个资源是我们刚刚定义好的资源 iv.setBackgroundResource(R.drawable.anim); //获取背景资源 AnimationDrawable background = (AnimationDrawable) iv.getBackground(); //开始执行动画 background.start();芙蓉城
0 0
- 安卓1108_四大组件-BroadCastReceiver广播接收者 ip拨号 短信拦截 开机自启 sd卡状态 APP安装监测 有序 无序广播 帧动画 国际化 style和theme
- 四大组件之BroadCastReceiver(无序广播和有序广播)
- 安卓BroadcastReceiver组件使用系列2:给多个广播接收者发送广播和有序广播的使用
- Android 四大组件之BroadcastReceiver(发送有序无序广播)
- Android四大组件——BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播
- Android四大组件——BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播
- Android四大组件——BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播
- Android四大组件——BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播
- android 四大组件之一 BroadcastReceiver 广播接收者
- Android 四大组件之 BroadcastReceiver 广播接收者
- Android四大组件之一 广播接收者 BroadcastReceiver
- Android四大组件BroadcastReceiver 广播接收者
- 四大组件 — BroadCastReceiver广播接收者
- 四大组件之BroadcastReceiver(广播接收者)
- 安卓 四大组件之一 广播 BroadcastReceiver
- android BroadcastReceiver详细讲解1-自带的广播接受器-拨号、短信、卸载/安装、开机启动
- android,自定义广播,最终广播接收者,防止拦截广播,有序广播,无序广播
- IP拨号广播接收者
- GitHub 简明教程
- nodejs群聊和私聊
- css3渐变(Gradients)
- 静态成员函数和静态成员变量
- hdu5916
- 安卓1108_四大组件-BroadCastReceiver广播接收者 ip拨号 短信拦截 开机自启 sd卡状态 APP安装监测 有序 无序广播 帧动画 国际化 style和theme
- c!#!给!应!用!程!序!创!建!快!捷!方!式!
- 阿里云Linux服务器安装tomcat
- HDU 5097 Page Rank(矩阵模拟)——2014上海全国邀请赛——题目重现(感谢上海大学提供题目)
- 方法(面向过程)
- Maven将自己写的jar安装到Maven仓库中(也包括jar包的源码)
- hdu 2078
- DOMXPath快速解析xml
- poj - 2891 Strange Way to Express Integers【线性同余方程】