ServiceManager.ets 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { startAbility, stopAbility } from '@ohos.ability.featureAbility';
  2. import { NotificationManager } from '@ohos.notificationManager';
  3. import { BusinessError } from '@ohos.base';
  4. import { Want } from '@kit.AbilityKit';
  5. export class ServiceManager {
  6. private static instance: ServiceManager;
  7. private constructor() {}
  8. public static getInstance(): ServiceManager {
  9. if (!ServiceManager.instance) {
  10. ServiceManager.instance = new ServiceManager();
  11. }
  12. return ServiceManager.instance;
  13. }
  14. // 启动服务并指定通知标题和内容
  15. startService(notificationTitle: string, notificationContent: string) {
  16. const want: Want = {
  17. bundleName: 'com.example.myapp',
  18. abilityName: 'MyService',
  19. parameters: {
  20. notificationTitle: notificationTitle,
  21. notificationContent: notificationContent
  22. }
  23. };
  24. startAbility(want, (err: BusinessError) => {
  25. if (err) {
  26. console.error(`Failed to start service. Code is ${err.code}, message is ${err.message}`);
  27. return;
  28. }
  29. console.info('Succeeded in starting service.');
  30. });
  31. }
  32. // 关闭服务
  33. stopService() {
  34. const want: Want = {
  35. bundleName: 'com.example.myapp',
  36. abilityName: 'MyService'
  37. };
  38. stopAbility(want, (err: BusinessError) => {
  39. if (err) {
  40. console.error(`Failed to stop service. Code is ${err.code}, message is ${err.message}`);
  41. return;
  42. }
  43. console.info('Succeeded in stopping service.');
  44. });
  45. }
  46. // 检测通知权限
  47. checkNotificationPermission() {
  48. return new Promise<boolean>((resolve, reject) => {
  49. NotificationManager.isNotificationEnabled((err: BusinessError, isEnabled: boolean) => {
  50. if (err) {
  51. reject(err);
  52. } else {
  53. resolve(isEnabled);
  54. }
  55. });
  56. });
  57. }
  58. // 申请通知权限
  59. requestNotificationPermission() {
  60. return new Promise<void>((resolve, reject) => {
  61. NotificationManager.requestEnableNotification((err: BusinessError) => {
  62. if (err) {
  63. reject(err);
  64. } else {
  65. resolve();
  66. }
  67. });
  68. });
  69. }
  70. // 更新通知内容和标题
  71. updateNotification(notificationTitle: string, notificationContent: string) {
  72. const want: Want = {
  73. bundleName: 'com.example.myapp',
  74. abilityName: 'MyService',
  75. parameters: {
  76. notificationTitle: notificationTitle,
  77. notificationContent: notificationContent
  78. }
  79. };
  80. startAbility(want, (err: BusinessError) => {
  81. if (err) {
  82. console.error(`Failed to update notification. Code is ${err.code}, message is ${err.message}`);
  83. return;
  84. }
  85. console.info('Succeeded in updating notification.');
  86. });
  87. }
  88. }