BroadcastReceiver实现唤起已关闭应用的功能
来源:互联网 发布:51单片机时钟电路图 编辑:程序博客网 时间:2024/05/21 18:42
实现的功能:监听屏幕解锁,唤起未开启的应用
特别注明:
在Android3.1以后,系统对广播接受进行了新的限制:
- 如果是新应用,需要手动开启一次才能接收到广播。
- 如果应用被用户从“后台进程管理器”中杀死,也将无法接收到广播。
- 不能静态注册的广播包含:
a.android.intent.action.SCREEN_ON
b.android.intent.action.SCREEN_OFF
c.android.intent.action.BATTERY_CHANGED
d.android.intent.action.CONFIGURATION_CHANGED
e.android.intent.action.TIME_TICK
网址:
https://developer.android.google.cn/reference/android/content/Intent.html
功能实现思路:
在Activity中,开启一个Service;在该Service中开启一个BroadcaseReceiver,实现监听屏幕解锁功能。
Service实现类:
public class BroadCastReceiverService extends Service { private Context context; private Intent intentActivity; public BroadCastReceiverService(){ } @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); intentActivity = new Intent(); intentActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intentActivity.setClass(BroadCastReceiverService.this,SecondActivity.class); /* 注册屏幕唤醒时的广播 */ IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON"); BroadCastReceiverService.this.registerReceiver( screenOnBroadCaseReceive, mScreenOnFilter); } ScreenOnBroadCaseReceive screenOnBroadCaseReceive = new ScreenOnBroadCaseReceive(); @Override public void onDestroy() { super.onDestroy(); BroadCastReceiverService.this.unregisterReceiver(screenOnBroadCaseReceive); startService(new Intent(context,BroadCastReceiverService.class)); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return Service.START_STICKY; } class ScreenOnBroadCaseReceive extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("android.intent.action.SCREEN_ON")){ startActivity(intentActivity); } } } //记住Service要在Manifest当中注册
MainActivity类:
public class MainActivity extends AppCompatActivity { private Button buttonClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonClick = (Button) findViewById(R.id.buttonClick); buttonClick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent serviceIntent = new Intent(); serviceIntent.setClass(MainActivity.this,BroadCastReceiverService.class); MainActivity.this.startService(serviceIntent); } }); } @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(this,"onDestroy",Toast.LENGTH_LONG).show(); }}
参考:
http://www.cnblogs.com/xxq1991/p/3688492.html
https://developer.android.google.cn/reference/android/content/Intent.html
阅读全文
0 0
- BroadcastReceiver实现唤起已关闭应用的功能
- IOS下的应用唤起实现原理
- 唤起Android手机中已安装的地图应用
- BroadcastReceiver 的简单应用
- Android App应用调用已安装市场,进行软件评分的功能代码实现
- 唤起QQ应用
- H5唤起原生应用
- H5唤起原生应用
- H5唤起原生应用
- 播放器的歌词功能已实现
- Android将后台应用唤起到前台的方法
- 虚拟现实新应用 唤起人们对气候变化的重视
- Android将后台应用唤起到前台的方法
- Android将后台应用唤起到前台的方法
- 实现对Activity的定时关闭功能
- 实现对Activity的定时关闭功能
- BroadcastReceiver的实现步骤
- Android BroadcastReceiver 的简单应用
- struts-4-标签
- ARM架构和X86架构区别
- POJ 3189 Steady Cow Assignment 笔记
- 证明NP问题(算法概论8.8)
- SecureCRT安装使用
- BroadcastReceiver实现唤起已关闭应用的功能
- (Java代码实现)单链表有环的一系列问题
- Java培训第02天 Java基础知识(一)---2017年07月11日
- LIGHT OJ 1189
- 杭电1197Specialized Four-Digit Numbers
- FTPrep, 8 atoi
- Idea 配置 Tomcat服务器
- 有哪些比较安全可靠的PDF编辑器
- Linux_170712_端口