intent

单元测试

淺唱寂寞╮ 提交于 2019-12-01 05:06:16
1. 为什么做单测 单测的好处 减少bug 快速定位bug 提高代码质量 减少调试时间 放心重构 不得不写单测的原因 在成为大牛的路上,单测是必备技能 单测可以给你信心 保住面子 难处 难于坚持,在快速迭代开发过程中,可供写单测的时间过少 扩展 TDD(Test Drive Develop):测试驱动开发,是一种非常高效的开发方式 2. 测试框架 2.1 概述 junit4.12 (单测框架) mockito1.9.5(mock工具) robolectric3.1.2 (模拟Android虚拟机) 2.2 junit4.12 Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 示例代码: @Before: 执行单测之前的初始化操作。 @After:单测完成后收尾工作。 @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } assume: 用于判断测试用例的入参是否有业务含义的工具,如果入参不符合预期时会抛出 assumptionViolatedException、assumeTrue

Android 显性意图与隐性意图

可紊 提交于 2019-12-01 05:02:32
Android 显性意图与隐性意图    1,认识显性意图与隐性意图     顾名思义,显性意图就是能在源码中看得出 Intent跳转的activity对象 Intent intent1=new Intent(this,Main2Activity.class); intent1.putExtra("one","one"); intent1.putExtra("two","two"); startActivity(intent1);     隐性意图即看不到跳转的对象     一般情况下,即在AndroidManifest.xml修改            <intent-filter> <action android:name="com.example.Login"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>     在activity 逻辑文件中写Intent      Intent intent=new Intent(/*this,Main2Activity.class*/); intent.setAction("com.example.Login"); intent.addCategory(Intent.CATEGORY_DEFAULT); intent

Android 调用系统相机录像

我的梦境 提交于 2019-12-01 02:30:37
使用 Intent 调用系统相机进行视频录制: Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); // 录制质量 1:高质量 0:低质量 intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); // 录制时长(单位:秒) intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5 * 60); startActivityForResult(intent, SYSTEM_CAMREA_RECORD_VIDEO); 录制完成后,可以在 onActivityResult 里面收到录制视频的地址内容: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == SYSTEM_CAMREA_RECORD_VIDEO) { if (resultCode == RESULT_OK) { Log.e(GlobalConfig.Log_TAG, "录制视频地址 = " + FileUtils.getPath(this, data.getData()));

Android WebView 支持 文件上传(Html File Upload)

核能气质少年 提交于 2019-12-01 01:37:25
背景:有个html页面,用html里面自带的<input type =file/>上传文件(图片,word,Excel等)浏览器直接打开可以上传,套壳在Android app里面,点击文件上传没反应,修改Android代码,可以实现相应功能,亲测有效。1、在oncreate 方法上面 加入以下代码: 1 private static final int REQUEST_STORAGE = 1; 2 private static final int REQUEST_LOCATION = 2; 3 public ValueCallback<Uri> mUploadMessage; 4 public static final int FILECHOOSER_RESULTCODE = 5173; 2、添加以下方法: 1 webView.setWebChromeClient(new WebChromeClient() { 2 3 // For Android 3.0+ 4 public void openFileChooser(ValueCallback<Uri> uploadMsg) { 5 6 mUploadMessage = uploadMsg; 7 Intent i = new Intent(Intent.ACTION_GET_CONTENT); 8 i.addCategory

显式intent和隐式intent

爷,独闯天下 提交于 2019-12-01 01:14:39
android当中显式intent和隐式intent的区别   定义:   Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。   显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent。   隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。 显示Intent直接指明了被启动的的类的定义  比如一个实例:  Mainactivity.java package com.example.root.longpra; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; public class MainActivity extends ActionBarActivity { @Override protected

Android之Activity的几种跳转方式

此生再无相见时 提交于 2019-12-01 01:14:25
1.显示调用方法 Intent intent=new Intent(this,OtherActivity.class); //方法1 Intent intent2=new Intent(); intent2.setClass(this, OtherActivity.class);//方法2 intent2.setClassName(this, "com.zy.MutiActivity.OtherActivity"); //方法3 此方式可用于打开其它的应用 intent2.setComponent(new ComponentName(this, OtherActivity.class)); //方法4 startActivity(intent2); 2.隐式调用方法(只要action、category、data和要跳转到的Activity在AndroidManifest.xml中设置的匹配就OK 3.跳转到另一个Activity后,当返回时能返回数据 在跳转的Activity端,调用startActivityForResult(intent2, 1),跳转到下一个Activity,其中第一个参数为传入的意图对象,第二个为设置的请求码; 跳转到第二个Activity后,调用setResult(100, intent)方法可返回上一个Activity,其中第一个参数为结果码

Android中BroadcastReceiver的使用

点点圈 提交于 2019-11-30 20:02:53
1、Android中广播分为静态注册和动态注册 2、下面是一个简单静态注册的例子 创建一个继承 BroadcastReceiver 的子类 public class DeviceBootReceiver extends BroadcastReceiver { private static final String TAG = DeviceBootReceiver.class.getName(); @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "开机了:" + intent.getAction()); } } 该类的功能用于接收手机开机的广播。 在 AndroidManifest.xml 中注册该组件 <receiver android:name=".DeviceBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> action 标签中的值用于匹配广播的类型,这里是开机广播。 这样当手机开机时,便会收到来自系统的消息。 同样,我们也可以监听应用安装,应用卸装,USB插拔等系统广播。只是

[Android] Activity的Launch mode详解

假如想象 提交于 2019-11-30 11:37:44
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard :Activity的默认加载方法,即使某个Activity在Task栈中已经存在,另一个activity通过Intent跳 转到该activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为: A B C D D 。此时如果栈顶的D通过Intent跳转到B,则栈情况为:A B C D D B。此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。 singleTop :如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候,再通过Intent跳转到本身这个Activity,则将不会创建一个新的 实例压入栈中。例如:现在栈的情况为:A B C D。D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。但是如果此时B的模式也是singleTop,D跳转到B,那么则会新建一个B的实例压入栈中,因为此时B不是位于栈顶

Activity经典实例二:启动其他Activity并返回结果

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 11:37:00
概述: 如果启动另一个Activity,并且希望返回结果给当前的Activity,那么可使用 startActivityForResult ()方法,在这种情况下,也是通过Bundle来进行数据交换的。 为了获取到被启动的Activity,当前的Activity要重写 onActivityResult (int requestCode, int resultCode, Intent intent)方法,其中参数1代表请求码,参数2代表返回的结果码,由开发者根据业务需要自定义。 一个Activity中可能包含多个按钮,并调用多个startActivityForResult()方法来打开多个不同的Activity处理不同的业务。当这些新的Activity关闭后,系统都会回调前面那个Activity的onActivityResult()方法。为了知道该方法是由哪个请求的结果所触发的,可利用requestCode请求码;为了知道返回的数据来自于哪个新的Activity,可利用resultCode结果码。 一、项目实例: 在第二个Activity里让用户选择所在地,并将选择的结果返回给第一个Activity 完整代码: ForResultActivity.java package com.xsjayz.ac; import android.app.Activity; import

Android使用Intent调用摄像头并获取照片

倖福魔咒の 提交于 2019-11-30 11:36:44
使用Android的Intent调用另外一个activity的时候,采用的是多线程机制,异步方式。startActivityForResult之后被调用activity并没有马上返回结果给调用activity,Android的Acitivity对象中 startActivityForResult的源代码中有相关的解释。 /** * Launch an activity for which you would like a result ‍ ‍ ‍ ‍ ‍ ‍ when it finished . ‍ ‍ ‍ ‍ ‍ ‍ * When this activity exits, your * onActivityResult() method will be called with the given requestCode. * Using a negative requestCode is the same as calling * { @link #startActivity} (the activity is not launched as a sub-activity). * * <p>Note that this method should only be used with Intent protocols * that are defined to return a