android - 挡屏时后台服务关闭,仅限华为
问题描述
我创建了一个带有前台服务的警报。它运行良好。它适用于所有手机,但不适用于华为,该服务在屏幕锁定时关闭。有没有人有任何想法来解决它?请帮忙。
这是我的代码的一部分:
public class ServiceWakeUp extends Service {
ServiceWakeUp activity;
MediaPlayer mediaPlayer;
String fname = "cheerful_2", wakeups = "";
AudioManager audio;
Dialog dia;
Thread runner2;
Handler handler = new Handler(Looper.getMainLooper());
final Runnable updater = new Runnable() {
public void run() {
StartService();
}
};
SharedPreferences preferences;
int elapsed;
//PowerManager pm;
//PowerManager.WakeLock wl;
@Nullable
@Override
public IBinder onBind(Intent intent) {
SelectClasses select = new SelectClasses(activity);
wakeups = select.getCalendarsSaved("");
return null;
}
@Override
public void onCreate() {
super.onCreate();
activity = this;
getInitialNotifForForeground();
mediaPlayer = new MediaPlayer();
dia = new Dialog(activity);
//mantenim la CPU encesa
//pm = (PowerManager)getApplicationContext().getSystemService(getApplicationContext().POWER_SERVICE);
// wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,getPackageName());
// wl.acquire();
preferences = PreferenceManager.getDefaultSharedPreferences(this);
int resID = getResources().getIdentifier(fname, "raw", getPackageName());
mediaPlayer = MediaPlayer.create(this, resID);
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
for(int a = 0;a < 5;a++)
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
audio.setSpeakerphoneOn(true);
audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
SelectClasses select = new SelectClasses(activity);
wakeups = select.getCalendarsSaved("");
elapsed = preferences.getInt("runner",0);
}
}
和这里。您可以看到广播接收器:
public class ReceiverBoot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SelectClasses select = new SelectClasses(context);
if(select.existActivedWakeup()){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(new Intent(context, ServiceWakeUp.class));
} else {
context.startService(new Intent(context, ServiceWakeUp.class));
}
}
}
}
解决方案
也许你需要配置应用启动设置,试试这个:
val intent = Intent()
intent.component = ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity")
try {
startActivity(intent)
} catch (ex: ActivityNotFoundException) {
// Fallback to global settings
startActivity(Intent(Settings.ACTION_SETTINGS))
}
推荐阅读
- sql-server - Grafana 的 SQL Server DMV sys.dm_os_buffer_descriptors
- reactjs - Post Component 重新渲染甚至调用 Post Component 的其他实例
- css - 在 Confluence 中更改代码块的字体系列
- javascript - javascript setCookie过期错误或被浏览器忽略?
- javascript - 如何通过 NodeJs 和 JavaScript 在 Selenium-Webdriver 中使用 Wait?
- javascript - 如果未找到 Object 的属性(Obj 构造函数),则返回值为 Not undefined。为什么?
- java - 如何从数组中获取长度作为 cass memeber?
- cassandra - 如何解决 cassandra 节点问题
- javascript - Nodejs Authorize.net重复客户付款资料错误
- datatables - DataTables寻呼机在有很多时显示一页