試試這個代碼來手動禁用&重新啓用該服務
private void toggleNotificationListenerService() {
PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(new ComponentName(this, your.NotificationListenerServiceImpl.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(new ComponentName(this, your.NotificationListenerServiceImpl.class), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
你能趕上廣播Intent.ACTION_PACKAGE_CHANGED
當服務被停用,就知道了。
而且您可以使用此代碼來檢查您的通知服務是否已啓用。
private static boolean isNotificationListenerServiceEnabled(Context context) {
Set<String> packageNames = NotificationManagerCompat.getEnabledListenerPackages(context);
if (packageNames.contains(context.getPackageName())) {
return true;
}
return false;
}
嘿Aditya,你找到了解決方法嗎? 我曾想過要求用戶禁用電池優化,並將其轉變爲前臺服務。我還沒有嘗試過。 – geecko