鱼C论坛

 找回密码
 立即注册
查看: 1283|回复: 2

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

[复制链接]
发表于 2020-6-8 19:39:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
背景:

最近在做一个关于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.     xmlns:tools="http://schemas.android.com/tools"
  4.     package="com.dou.dou">

  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.         <receiver
  13.             android:name="com.dou.dou.ShutDownBroadcastReceiver">
  14.             <intent-filter>
  15.                 <action android:name="android.intent.action.BOOT_COMPLETED" />
  16.                 <!--<category android:name="android.intent.category.HOME" />-->
  17.             </intent-filter>

  18.             <intent-filter>
  19.                 <action android:name="android.intent.action.ACTION_SHUTDOWN" />
  20.                 <!--<category android:name="android.intent.category.HOME" />-->
  21.             </intent-filter>
  22.         </receiver>
  23.     </application>

  24.     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  25.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  26.     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  27.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  28.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  29.     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

  30. </manifest>
复制代码


下面是实现接收关机广播的处理实现
  1. package com.dou.dou;

  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;

  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. public class ShutDownBroadcastReceiver extends BroadcastReceiver {
  11. //    private static final String TAG = "ShutdownBroadcastReceiver";
  12.     private static final String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";

  13.     @Override
  14.     public void onReceive(Context context, Intent intent){
  15.         System.out.println("---------Shut down-------------");
  16.         File file = new File ("/sdcard/result.txt");
  17.         if(intent.getAction().equals(ACTION_SHUTDOWN)){
  18.             try {
  19.                 if(!file.exists())
  20.                 {
  21.                     file.createNewFile();
  22.                 }
  23.                 FileWriter writer = null;
  24.                 writer = new FileWriter(file, true);
  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.     }
  32. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-11 08:02:52 | 显示全部楼层
  1. Intent intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
  2. intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
复制代码


试试这个 intent
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 14:26:32 | 显示全部楼层

刚试过,也是不行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 22:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表