博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[安卓] 15、用NFC解锁手机并自动打开应用
阅读量:6231 次
发布时间:2019-06-22

本文共 2804 字,大约阅读时间需要 9 分钟。

 

 

最近接到一个项目:将手机放到一个带有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" />

1 
2
6 7
10 11
16
19
20 21
22
23 24
29
32
33
34
35
36 37
38
39
40
41 42 43 44

Activity中也比较简单——

onCreate中检测硬件是否支持和是否打开NFC

onResume中通过getIntent().getAction()获取当前的action然后显示在UI的文本显示区中

  第34-48行是冲破图案锁,电量屏幕用的

1 public class Activity_Main extends Activity { 2  3     NfcAdapter nfcAdapter;   4     TextView promt;   5     @Override   6     public void onCreate(Bundle savedInstanceState) {   7         super.onCreate(savedInstanceState);   8         setContentView(R.layout.ui_main);  9         promt = (TextView) findViewById(R.id.promt);  10         // 获取默认的NFC控制器  11         nfcAdapter = NfcAdapter.getDefaultAdapter(this);  12         if (nfcAdapter == null) {  13             promt.setText("设备不支持NFC!");  14             System.out.println("设备不支持NFC!");  15             finish();  16             return;  17         }  18         if (!nfcAdapter.isEnabled()) {  19             promt.setText("请在系统设置中先启用NFC功能!");  20             System.out.println("请在系统设置中先启用NFC功能!");  21             finish();  22             return;  23         }24         promt.setText("正常启用APP!");  25         System.out.println("正常启用APP!"); 26     }  27   28     @Override  29     protected void onResume() {  30         super.onResume(); 31         promt.setText(getIntent().getAction());  32         System.out.println("正常启用APP!"); 33         34         PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);  35         //获取电源管理器对象  36         PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");  37         //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag  38         wl.acquire();  39         //点亮屏幕  40         wl.release();  41         //释放  42    43         KeyguardManager  km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);  44         //得到键盘锁管理器对象  45         KeyguardLock kl = km.newKeyguardLock("unLock");    46         //参数是LogCat里用的Tag  47         kl.disableKeyguard();   48         //解锁
49 } 50 }

 

资源链接

 

 

@beautifulzzzz

  2015-11-02 持续更新中~

 

转载地址:http://tdqna.baihongyu.com/

你可能感兴趣的文章
在 Linux 上管理加密密钥的最佳体验
查看>>
值得学习的C语言开源项目
查看>>
SYSTEMTAP -ORACLE
查看>>
[唐诗]183清平调词三首-李白
查看>>
深入敌后,揭开骇客真面目
查看>>
使用 Drag and Drop 给Web应用提升交互体验
查看>>
Flutter 三探
查看>>
一道java面试题分析及思考
查看>>
全栈 - 12 数据库 用Python操作MySQL
查看>>
假如有一天,人工智能用于相亲
查看>>
0227 - 简单了解了 ETH 挖矿
查看>>
技术问答集锦(14)ThreadPoolExecutor
查看>>
macOS Charles 4.x版本的安装及使用(含破解激活)
查看>>
InnoDB透明页压缩与稀疏文件
查看>>
阅读SSM项目之scm【第二篇】
查看>>
聊聊springmvc中controller的方法的参数注解
查看>>
AspectJ 学习笔记
查看>>
GRU神经网络
查看>>
【log4】window用于设置小程序的状态栏、导航条、标题、窗口背景色。
查看>>
gpexpand分析
查看>>