[安卓] 15、用NFC解锁手机并自动打开应用
最近接到一个项目:将手机放到一个带有NFC卡的底座上手机会自动解锁,然后打开相应的应用
本人用:杭州公交通用卡做为NFC卡+Coolpad手机进行试验
效果如下:
1、手机本身带有图案锁,输对图案才能解锁
2、Coolpad带有NFC功能
3、把手机内的所有正在运行的应用清空
4、关闭手机(目前处于锁住状态)
5、将NFC卡靠近
6、自动解锁+启动应用
注:我用华为的手机无法实现突破锁屏、打开应用的效果
工程核心代码
整个代码比较简单:(新建一个工程)在AndroidManifest.xml加入uses-feature和permission
同时还要在相应的activity中加入intent-filter,这里注意一定要加:<category android:name="android.intent.category.DEFAULT" />
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.beautifulzzzz.nfc_test"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" /> <!--
see http://www.developer.com/ws/android/nfc-programming-in-android.html for reference (note
that the minimum API version must be set as 10 in build.gradle (Module: app) for this to work,
and that classes being used from the nfc package require a minimum API version 14):
-->
16 <uses-feature
17 android:name="android.hardware.nfc"
18 android:required="true" />
19 <uses-permission android:name="android.permission.NFC" />
20
21 <uses-permission android:name="android.permission.WAKE_LOCK"/>
22 <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Activity_Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> 37 <intent-filter>
38 <action android:name="android.nfc.action.TAG_DISCOVERED" />
39 <category android:name="android.intent.category.DEFAULT" />
40 </intent-filter>
</activity>
</application> </manifest>
Activity中也比较简单——
onCreate中检测硬件是否支持和是否打开NFC
onResume中通过getIntent().getAction()获取当前的action然后显示在UI的文本显示区中
第34-48行是冲破图案锁,电量屏幕用的
public class Activity_Main extends Activity {
NfcAdapter nfcAdapter;
TextView promt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_main);
promt = (TextView) findViewById(R.id.promt);
// 获取默认的NFC控制器
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
promt.setText("设备不支持NFC!");
System.out.println("设备不支持NFC!");
finish();
return;
}
if (!nfcAdapter.isEnabled()) {
promt.setText("请在系统设置中先启用NFC功能!");
System.out.println("请在系统设置中先启用NFC功能!");
finish();
return;
}
promt.setText("正常启用APP!");
System.out.println("正常启用APP!");
}
@Override
protected void onResume() {
super.onResume();
promt.setText(getIntent().getAction());
System.out.println("正常启用APP!");
PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);
//获取电源管理器对象
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
//获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
wl.acquire();
//点亮屏幕
wl.release();
//释放
KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
//得到键盘锁管理器对象
KeyguardLock kl = km.newKeyguardLock("unLock");
//参数是LogCat里用的Tag
kl.disableKeyguard();
//解锁</pre><br><br>
}
}
资源链接
android之android.intent.category.DEFAULT的用途和使用
Android NFC开发概述(作者找了很多网上的NFC资料,可参考,有疏漏)
Android NFC 开发实例(一个简单的demo,我试了几下有点小问题,可参考)
本工程下载地址:http://pan.baidu.com/s/1c04ries
@beautifulzzzz
2015-11-02 持续更新中~
[安卓] 15、用NFC解锁手机并自动打开应用的更多相关文章
- 8、NFC技术:让Android自动打开网页
创建封装Uri的NdefRecord public NdefRecord createUri(String uriString); public NdefRecord cre ...
- 微信中扫描二维码自动打开手机系统默认浏览器下载APP(APK)
很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 功能目的 生成微信跳转链接,实现微信内置浏览 ...
- Android SimpleAdapter ListView (锁定手机,解锁手机的列表)
SimpleAdapter是扩展性最好的适配器,可以定义各种你想要的布局. 构造方法: SimpleAdapter(Context context, List<? extends Map< ...
- vue-cli2.9.1如何自动打开浏览器及实现手机调试
在vue-cli2.9.1以前我们运行 "npm run dev" 程序会自动打开浏览器进行调试,而且在手机浏览器输入 "IP地址:8080" 能实现在手机端的 ...
- 门禁 IC卡 ID 卡 RFID 手环 NFC 银行卡 手机模拟门禁
门禁 IC卡 ID 卡 RFID 手环 NFC 银行卡 手机模拟门禁 原因 最近给公司换了一个门禁. 旧的门禁按键面板已经破了. 不支持我的手环. 按了密码后竟然要按 #. 相关信息 查了资料记录一下 ...
- Chrome安卓H5调试,连接手机检测不到页面
Chrome安卓H5调试,连接手机检测不到页面,重启什么的都不行,未找到设备,或者offline,怎么办? 首先手机开启调试模式是必须的 然后用adb工具箱,cmd进来 运行命令 adb kill-s ...
- 手机浏览器自动播放视频video(设置autoplay无效)的解决方案
1.问题的提出 某一天接了个需求,需要在手机的H5页面内加入视频,我开开心心做完,准备交付的时候,问题来了,PM想要用户一进入页面,视频就开始播放,不需要用户手动点击. 2.尝试解决 加autopla ...
- 微信中打开链接,自动打开外部浏览器打开指定URL页面
上半年公司有一个新的APP项目上线,我们在项目首页做个二维码,然后用户用手机扫一扫就能下载了.但是很多用户反映扫一扫之后下载不了,了解之后才知道这些用户都是使用的微信的扫一扫,而我们开发测试人员一般使 ...
- webpack之带有可自动打开浏览器及热重载的基本配置
什么是Webpack WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并 ...
随机推荐
- Process类
public bool Process.Start () 启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联. public bool Process ...
- pd name与comment互换,或者code互换,总之互换
1 PowerDesigner中批量根据对象的name生成comment的脚本 执行方法:Open PDM -- Tools -- Execute Commands -- Run Script Opt ...
- LeetCode(97) Interleaving String
题目 Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: ...
- AD帐户操作C#示例代码(一)——导入用户信息
最近写了一个AD帐户导入的小工具(为啥写作“帐”户呢?),跟大家分享下相关代码,欢迎各位高手指教! 首先,我准备一个这样的Excel文件作为导入模版,并添加了一些测试数据. 然后,我打开Visual ...
- css怎样让HTML中超出的内容显示为省略号
文字超出了需要隐藏并显示省略号这个在工作中很多时候都要用到,我想很多人都碰到过吧,这个有两种解决方法第一种.用程序开截取字符长度,这个其实也是可以的.第二种就是接下来分享的内容,用css样式来做,话也 ...
- php怎么解决超链接中的中文参数转码问题?
如题,我需要通过前端的网页传递一个中文参数(如:电脑)给后端的PHP文件,传递方式是通过超链接 "index.php/search/keyword/电脑" ,很明显的中文在传递过程 ...
- Win7 64位 VS2013环境编译Lua5.3.1
主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lu ...
- Asp.Net 利用反射获得委托和事件以及创建委托实例和添加事件处理程序
子程序定义: public delegate void CurrentControlListenEvent(string uniqueID, string way = null); public ev ...
- iOS原生地图开发指南续——大头针与自定义标注
iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...
- matlab linux 安装
1. 获取matlab的iso文件,并挂载到目录下2. sudo sh $(matlab_path)/matlab安装(破解,相关见说明)3. 加入系统路径,将$(matlab_install_pat ...