intent

20190918 广播 - 广播接收器

随声附和 提交于 2019-11-30 02:11:45
抄代码 public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private NetworkChangeReceiver networkChangeReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); networkChangeReceiver = new NetworkChangeReceiver(); registerReceiver(networkChangeReceiver, intentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(networkChangeReceiver); }

如何实现 APK 的升级功能?

ぃ、小莉子 提交于 2019-11-30 00:01:09
2019-09-18 关键字:APK后台升级、APK自动升级 最近在磕一个APK,要做一个热更新的功能。笔者以前从来没有做过类似的功能,但没吃过猪肉总是见过猪跑步的,想了一下,要实现一个纯粹的升级功能似乎也不难。 1、升级原理 一个纯粹的升级功能只需要三个模块。 1、服务器; 2、升级包与升级信息; 3、具备升级功能的应用程序。 1、服务器 如果仅是想实现一个纯粹的升级功能的话,那服务器这边没啥特殊的要求。搭建一个最普通的 HTTP 访问型的站点即可。 2、升级包与升级信息 升级包就是新版本的 APK 程序安装包。但由于升级包通常来讲不具备信息描述能力,所以我们要再额外准备一个升级描述信息。升级策略就是将当前升级包的相关信息记录在升级信息中,客户端通过解析、判断升级信息来决定升级与否。换句话说,服务器端对外只暴露出一个升级信息出来。真实的升级程序地址,是需要解析升级信息来来获取的。 3、具备升级功能的应用程序 至于客户端,职责就清晰且单一了。程序启动后,在后台开一个线程定时访问升级服务器,拿到升级信息以后再做解析判断。当有更新版本时,下载然后提示升级。仅此而已。 2、实现 1、服务器搭建 服务器端很简单,使用 Ngix 搭建即可。然后开辟一个目录专门用于存放应用升级的文件。 2、升级包与升级信息准备 升级包就不说了,直接编译生成 APK 文件即可。 至于升级信息,看实际需求咯

Adnroid利用AIDL实现Service间的双向通信

杀马特。学长 韩版系。学妹 提交于 2019-11-29 22:17:00
网上相当多关于android利用AIDL实现进程间通信文章,基本上都是activity去bind一个service,然后调用客户端,也就是activity这边调用服务端的方法。但我心里一直有个疑问,这种模式是单向的,如何实现AIDL的双向通信?于是跑了下面的Demo。 大致原理是两个Service,Service1和Service2,Service1bind好Service2后,拿到Service2的Binder对象,在本地转成AIDL对象,然后通过这个AIDL对象再传递一个AIDL对象到Serivce2,传过来的这个AIDL的“根”Stub,就是接口的实现,是在Service1这边,这样Service2通过接口可以调用Service1的方法。 下面是代码: 两个AIDL接口的定义: // IMyAidlInterface.aidl package com.acxingyun.servicecomunication; import com.acxingyun.servicecomunication.IRegistAidl; // Declare any non-default types here with import statements //传递AIDL接口到对端,需要在文件开始import这个AIDL文件 interface IMyAidlInterface { void

Android中隐式意图(Intent)用法

不羁岁月 提交于 2019-11-29 19:53:31
Intent对象在Android应用开发中起到很大的作用,例如激活组件(Activity,Service 等组件)或者携带数据的功能,相信大家在开发中经常会用到这些功能,Android中的意图分为 显式意图 和 隐式意图 ,显式意图大家应该用得比较多,但隐式意图在开发过程中也是必不可少的。在这篇文章中粗略讲解下个人对隐式意图的用法。 假设情景:我要从一个Activity跳转到另外一个Activity中,通过隐式意图来激活另外一个Activity,应该如何实现呢? 首先,我们在Manifest.xml配置文件中配置intent-filter过滤器节点: [html] view plain copy <? xml version = "1.0" encoding = "utf-8" ?> < manifest xmlns:android = "http://schemas.android.com/apk/res/android" package = "com.andyidea.intentdemo" android:versionCode = "1" android:versionName = "1.0" > < uses-sdk android:minSdkVersion = "8" /> < application android:icon = "@drawable/ic

【转】Android深入探究笔记之三 -- Intent (隐式意图和显示意图)

*爱你&永不变心* 提交于 2019-11-29 19:53:21
1. Intent Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) , Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递 Intent 来执行动作和产生事件。 使用 Intent 可以激活 Android 应用的三个核心组件:活动(Activity)、服务(Service)和广播接收器(BroadcastReceiver)。 2. 显式意图、隐式意图 Intent可以划分成显式意图和隐式意图。 显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。 如: 在 MainActicity 中打开一个新的 Acticity -- OtherActivity 1. Intent intent = new Intent(); 2. intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class)); 3. 第二行代码可以更换为:intent.setClass(MainActivity.this, OtherActivity.class);

Android的Notification研究

喜夏-厌秋 提交于 2019-11-29 19:52:54
Android的Notification研究 最近在研究Android,遇到了一些Notification(通知)的问题: 1、Notification如何传递参数 2、Notification如何区别化 3、从Intent(意图)寻找Activity(活动)说起,Android的Activity栈。 =============================================================== 先从发送通知开始。 首先,在发送一个Notification前,我们需要准备好一个NotificationManager 获得途径: NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); this为Application或者Activity。 然后,定义好我们的Notification: 1、定义一个Notification具备的三个基本参数icon,title,以及when ? int icon=R.drawable.teller_call_1; long when = System.currentTimeMillis(); Notification notification

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 - java.lang.IllegalArgumentException: Receiver not registered

a 夏天 提交于 2019-11-29 18:45:37
java.lang.IllegalArgumentException: Receiver not registered 从平台上可以看到Crash的错误问题, 出现了以下这条 java.lang.IllegalArgumentException: Receiver not registered 明明我OnResume有注册、OnPause有移除。 但为什么会发生这个问题 private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ... doSomeThing } }; BroadcastReceiver这样命 onResume如下 @Override protected void onResume() { super.onResume(); registerReceiver(mReceiver, new IntentFilter("filter_action")); } onPause如下 @Override protected void onPause() { super.onPause(); unregisterReceiver(mReceiver); } 但会出现如下的错误消息

Android高级面试 —— onActivityResult能不能设计成回调?

半世苍凉 提交于 2019-11-29 15:01:55
文章目录 1. 你觉得onActivityResult好用吗? 2. onActivityResult能设计成回调吗? 我觉得这是一个很有趣的问题,有趣的除了题目本身,也在于其引申出的感悟。我们在使用和学习Android Framework相关的内容时,除了要了解其内部实现机制,还要求自己要试着去反思,或者提问其设计的目的,这样才能帮助我们更好的理解和吸收其设计的精髓之处。 1. 你觉得onActivityResult好用吗? 面试官在提出设计问题前可能会先抛砖引玉,先提出这个问题来探一探面试者有没有真正的去体验和总结相关的内容。大部分人可能会说,麻烦!那为什么麻烦呢?首先先看一下onActivityResult是怎么使用的: // Activity A startActivityForResult ( intent , requestCode ) ; // Activity B setResult ( resultCode , intent ) ; // Activity A @Override protected void onActivityResult ( int requestCode , int resultCode , Intent data ) { super . onActivityResult ( requestCode , resultCode , data

android onNewIntent

China☆狼群 提交于 2019-11-29 14:46:46
pendingIntent字面意义:等待的,未决定的Intent。   pendingIntent对象,使用方法类的静态方法 :       getActivity(Context, int, Intent, int) -------> 跳转到一个activity组件、      getBroadcast(Context, int, Intent, int)------>打开一个广播组件     getService(Context, int, Intent, int) --------> 打开一个服务组件。   分别对应着Intent的3个行为和参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。   pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。 主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。 intent英文意思是意图