遇到难题求高手帮忙解决--Android P开始监听不到关机广播

背景:

最近在做一个关于android的续航时间测试apk,从开始测试记录时间到低电自动关机时这整个的时间,当前采用监听关机广播的来实际统计续航时间,但遇到的问题是同样的测试apk在android8及以下系统均能正常监听到关机广播,但从android 9开始就监听不到关机广播了。

 

下面是我的监听广播注册方法(采用静态注册关机 广播方式)

AndroidManifest.xml如下

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.dou.dou">
 4 
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:roundIcon="@mipmap/ic_launcher_round"
10         android:supportsRtl="true"
11         android:theme="@style/AppTheme">
12 
13         <receiver
14             android:name=".ShutDownBroadcastReceiver"
15             android:exported="true">
16             <!--<intent-filter>-->
17                 <!--<action android:name="android.intent.action.BOOT_COMPLETED" />-->
18                 <!--<category android:name="android.intent.category.HOME" />-->
19             <!--</intent-filter>-->
20 
21             <intent-filter>
22                 <action android:name="android.intent.action.ACTION_SHUTDOWN" />
23                 <!--<category android:name="android.intent.category.HOME" />-->
24             </intent-filter>
25         </receiver>
26     </application>
27 
28     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
29     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
30     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
31     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
32     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
33     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
34 
35 </manifest>
复制代码

 

下面是实现接收关机广播的处理实现

复制代码
 1 import android.content.BroadcastReceiver;
 2 import android.content.Context;
 3 import android.content.Intent;
 4 
 5 import java.io.File;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8 import java.text.SimpleDateFormat;
 9 import java.util.Date;
10 
11 public class ShutDownBroadcastReceiver extends BroadcastReceiver {
12     @Override
13     public void onReceive(Context context, Intent intent){
14         System.out.println("---------Shut down-------------");
15         File file = new File ("/sdcard/result.txt");
16         try {
17             if(!file.exists())
18             {
19                 file.createNewFile();
20             }
21             FileWriter writer = null;
22 
23                 writer = new FileWriter(file, true);
24 
25             writer.write("Shut_down [" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((new Date()).getTime()) + "]\n");
26             writer.close();
27         } catch (IOException e) {
28             e.printStackTrace();
29         }
30     }
31 }
复制代码

 

posted @   iSZ  阅读(1287)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示