首页
学习
活动
专区
圈层
工具
发布

Android 必知必会 - 使用 Intent 打开第三方应用及验证可用性

GitHub 版 本文主要记录: 使用 Intent 打开第三方应用或指定 Activity 的三种方式 使用上面三种方式时分别如何判断该 Intent 能否被解析 判断该 Intent 能否被解析中可能出现的遗漏...Activity 的方式 只知道包名 - 需要有默认的入口 Activity 启动指定第三方应用的 Activity - 需要包名和 Activity 名,且该 Activity 的 Export=“true...但此方式要求的条件多,如下: 知道 App 的包名和 Activity 的全路径及其名称 需要启动的目标 Activity 在 AndroidManifest.xml 中的属性 Export=“true...相对的,resolveActivityInfo() 则可以进行有效判定并返回 null。...PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } 那么,总结下来就是: 方式一 PackageManager.getLaunchIntentForPackage(),直接判断返回的

4.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android笔记:判断是否为模拟器(实测夜神通过)

    因为不确定因素太多,最近公司需要禁止本程序在虚拟机上运行。...我网上找了好多,各种方法什么设备号,拨打电话,蓝牙设备,模拟器的检测往往是防作弊中的重要一关,这里把这两天收集到的代码写在这偏文章里,和大家进行一个简单的分享。...不过随着防反作弊技术的迭代,现在很多模拟器都可以改变这些值来逃避检测,所以上述传统方法在很多时候未曾达到开发者的预期效果。...intent.setAction(Intent.ACTION_DIAL); // 是否可以处理跳转到拨号的 Intent boolean canResolveIntent = intent.resolveActivity...; } else { return false; } } 蓝牙 /* *判断蓝牙是否有效来判断是否为模拟器 *返回:true 为模拟器

    1.9K11

    Android 点击通知栏消息打开activity,并判断app是否运行

    ; } } return false; } 获取app的运行状态,返回1代表当前应用在前台运行,返回2代表当前应用在后台运行,返回0代表应用未启动(没有一个存活的activity...否则就启动应用,intent中传递一个键为FORM_NOTICE_OPEN,值为true的参数标识是从点击消息通知跳转过来的,再将上一步传递过来的intent当做参数传给当前的intent。...例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为: A B C D D 。...此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。...D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。

    3.9K10

    处理屏幕旋转导致的重建,单例对象,StringBuilder进行拼接,ProGurad 混淆,VectorDrawable 及 AnimatedVectorDrawable,IntentService

    处理屏幕旋转导致的重建 当屏幕发生旋转时,如果我们没有在AndroidManifest.xml中,对其configChanges属性进行声明,那么就会导致Activity进行重建,此时,就需要重新加载Activity...在EditText控件中输入后,当屏幕旋转后,里面的内容就会不见,activity进行了重建,但是checkBox不会重建。...intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); if (intent.resolveActivity...minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile(...对于一些短时的后台任务,我们可以考虑采用IntentService,它的onHandleIntent回调是在异步线程中执行的,并且任务执行完毕后,该Service会自动销毁,不需要手动管理。

    17910

    Android自动化测试基础 -- ADB介绍

    前言 每一个准备学习Android自动化测试的同学,都会面临一个Android自动化测试框架的选择问题。与之前PC和WEB的测试框架不同,Android的自动化框架乍一看,非常的唬人。...通过这篇文章的介绍,希望能帮助到想了解或者进行Android自动化测试的同学,对Android自动化测试和框架有一个快速的入门和了解。...Monkey monkeyrunner 当然你还可能接触到其它的自动化框架,比如: python版的uiautomator和uiautomator2 腾讯的QT4A 网易的AirTest 基于JVM的Roboletric...否则在使用过程中“尥蹶子”就不好了。如果你在网上搜ADB原理,会出现很多很多的相关文章,所以这里就只做一个简单的说明,想要挖局更多细节的可以自行深入。 ?...adb命令时会自动启动,之后会一直运行在后台 adbd则是一直在手机上的后台运行,至于启动时间点估计是在设置debug时 ?

    1.4K41

    Android M 权限最佳实践

    例如,在应用中申请READ_EXTERNAL_STORAGE权限,用户同意授权后,则应用同时具有READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限。...会默认给予所有在AndroidManifest.xml中申请的权限。...( )方法名太长,在表格中简写 第i次用户勾选了“不再询问”,同时也没有给予应用权限,则第i + 1次应用将无法唤起请求权限的Dialog,只能引导用户进入设置界面,手动勾选所需权限。...从上面的表格可以看出,如果上次shouldShowRequestPermissionRationale( )返回了true,而这次调用该方法返回了false,则说明用户在上次勾选了“不再询问”。...序号 用户是否授予权限 shouldShowRationale( ) 返回 是否勾选“不再询问” 再次调用shouldShowRationale( )返回 1 否 false - true 2 否 true

    1.6K91

    【Android 插件化】Hook 插件化框架 ( Hook Activity 启动过程 | 静态代理 )

    Hook 技术进行 Hook 住 Activity 启动过程 ; ---- 一、分析 Activity 启动源码 ---- 1、源码分析 在 " 宿主 " 模块中 , 启动 " 插件 " 模块 , 调用的是...AutofillManager.EXTRA_RESTORE_CROSS_ACTIVITY)) { if (TextUtils.equals(getPackageName(), intent.resolveActivity...设置 Field mInstrumentation 字段的可访问性 mInstrumentation_Field.setAccessible(true); 3、获取 Activity 中的...Instrumentation mInstrumentation 成员变量 ; 代理类中需要持有上述成员变量 , 通过反射获取该成员 , 并设置给代理者 ; 在代理类中 , 继承 Instrumentation...execStartActivity 方法 ; 在代理类 execStartActivity 方法中 , 首先调用持有的 Activity 中原本的 Instrumentation mInstrumentation

    1.1K30

    Android组件化开发思想与实践

    组件化方案 组件化是一种思想,团队在使用组件化的过程中不必拘泥于形式,可以根据自己负责的项目大小和业务需求的需要制定合适的方案,如下图就是一种组件化结构设计。 ?...宿主app 在组件化中,app可以认为是一个入口,一个宿主空壳,负责生成app和加载初始化操作。 业务层 每个模块代表了一个业务,模块之间相互隔离解耦,方便维护和复用。...3、在Appliction里对ARouter进行初始化,因为ARouter是所有的模块层组件都会用到,所以它的初始化放在BaseAppliction中完成。...线上版本需要关闭,否则有安全风险) } ARouter.init(application); //尽可能早,推荐在Application中初始化 } } 4、在...1、在base中定义接口并继承ARouter的IProvider。

    73020

    【Android基础】Android利用Intent与其他应用交互

    前言: 上一篇博客给大家聊了Intent的定义,分类、属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法。...比如你的应用程序需要给用户显示一个地理位置在地图上,你不必在你的应用程序中实现地图功能,而是创建一个显示这个地理位置的Intent,发送出去,Android系统会启动那些可以处理这个请求的应用程序。...在Android中通过文件的MIME类型来判断有哪些应用程序可以处理这些文件,并使用其中的某一个应用程序(如果有多个可选的应用程序,则用户必须指定一个)处理之。...你可以调用queryIntentActivities()方法来验证Intent是否会有Activity响应,queryIntentActivities()返回一个能够响应该Intent的Activity...Intent.createChooser(intent, title); // Verify the intent will resolve to at least one activity if (intent.resolveActivity

    1.2K100

    技术分享 | 你知道 MySQL 函数 sysdate() 与 now() 的区别么?

    根据官方说明如下: now() 函数返回的是一个常量时间,该时间为语句开始执行的时间。即当存储函数或触发器中调用到 now() 函数时,now() 会返回存储函数或触发器语句开始执行的时间。...,而当 SQL 语句两次调用 sysdate() 函数时,前后两次 sysdate() 函数返回的时间在更新。...3测试示例 以下通过示例模拟客户类似场景。 我们先创建⼀张测试表,对 create_time 字段创建索引并插入数据,观测函数 sysdate() 和 now() 使⽤索引的情况。...索引的情况,可以看到 key 使⽤到了 idx_create_time 这个索引。...函数 sysdate() 则是执行时动态获取时间(为该语句执行的确切时间),所以在优化器对 SQL 解析时是不能确定其返回值是多少,从而不能做 SQL 优化和评估,也就导致优化器只能选择对该条件做全表扫描

    94810
    领券