gpt4 book ai didi

java - 通过 AlarmManager 发送通知

转载 作者:行者123 更新时间:2023-11-30 00:54:41 24 4
gpt4 key购买 nike

我希望每一分钟都推送一个通知,并尝试了这个: https://stackoverflow.com/a/8801990

但问题是,警报没有运行。我尝试设置日志,但看不到它们...

现在我开始了一个新项目,这是我的文件,也许有一个导入是错误的,但我不知道......:

MainActivity.java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//startService(new Intent(this, YourService.class));
Log.e("MainActivity", "onCreate");
}
}

Alarm.java

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.util.Log;
import android.widget.Toast;


public class Alarm extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();

// Put here YOUR code.
Log.e("Alarm", "onReceive");
Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example

wl.release();
}

public void setAlarm(Context context)
{
Log.e("Alarm", "setAlarm");
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
// Changed to 1 minute
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 1, pi); // Millisec * Second * Minute
}

public void cancelAlarm(Context context)
{
Intent intent = new Intent(context, Alarm.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}

YourService.java

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class YourService extends Service
{
Alarm alarm = new Alarm();
public void onCreate()
{
Log.e("Service", "onCreate");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.e("Service", "onStartCommand");
alarm.setAlarm(this);
return START_STICKY;
}
@Override
public void onStart(Intent intent, int startId)
{
alarm.setAlarm(this);
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}

与链接中的代码相同,我只是将时间更改为一分钟...这是我的 Manifest.xml:

<?xml version="1.0" encoding="utf-8"?>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<!--AutoStart Receiver -->
<receiver android:name="com.example.alarm.alarmmanagertest.AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>

<!-- Receiver and Permisson added -->
<receiver android:process=":remote" android:name="com.example.alarm.alarmmanagertest.Alarm"></receiver>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

<!-- Added my Service -->
<service
android:name=".YourService"
android:enabled="true"
android:process=":your_service" >
</service>
</application>

Android Monitor 中没有类似“E/Alarm: onReceive”的内容,例如 toast 也没有启动。老实说,我什么都试过了,也试过这个:http://it-ride.blogspot.de/2010/10/android-implementing-notification.html

有人可以帮我吗,这是推送通知的正确方法吗?现在使用 API 16...

应用日志:

11-02 21:48:19.234 3433-3433/? D/dalvikvm: Late-enabling CheckJNI
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.app.Application.registerOnProvideAssistDataListener, referenced from method com.android.tools.fd.runtime.BootstrapApplication.registerOnProvideAssistDataListener
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 234: Landroid/app/Application;.registerOnProvideAssistDataListener (Landroid/app/Application$OnProvideAssistDataListener;)V
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.app.Application.unregisterOnProvideAssistDataListener, referenced from method com.android.tools.fd.runtime.BootstrapApplication.unregisterOnProvideAssistDataListener
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 237: Landroid/app/Application;.unregisterOnProvideAssistDataListener (Landroid/app/Application$OnProvideAssistDataListener;)V
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
11-02 21:48:19.726 3433-3433/com.example.alarm.alarmmanagertest I/InstantRun: Instant Run Runtime started. Android package is com.example.alarm.alarmmanagertest, real application class is null.
11-02 21:48:19.734 3433-3433/com.example.alarm.alarmmanagertest W/InstantRun: No instant run dex files added to classpath
11-02 21:48:19.742 3433-3433/com.example.alarm.alarmmanagertest E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources
11-02 21:48:19.742 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve check-cast 1886 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/MonkeyPatcher;
11-02 21:48:19.742 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x1f at 0x025e
11-02 21:48:19.742 3433-3433/com.example.alarm.alarmmanagertest E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.pruneResourceCache
11-02 21:48:19.742 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve const-class 1886 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/MonkeyPatcher;
11-02 21:48:19.742 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x1c at 0x0060
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.view.Window$Callback.onProvideKeyboardShortcuts, referenced from method android.support.v7.view.WindowCallbackWrapper.onProvideKeyboardShortcuts
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve interface method 16034: Landroid/view/Window$Callback;.onProvideKeyboardShortcuts (Ljava/util/List;Landroid/view/Menu;I)V
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve interface method 16036: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve interface method 16040: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 721: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 743: Landroid/content/res/TypedArray;.getType (I)I
11-02 21:48:20.101 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0008
11-02 21:48:20.437 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.widget.FrameLayout.startActionModeForChild, referenced from method android.support.v7.widget.ActionBarContainer.startActionModeForChild
11-02 21:48:20.437 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 16467: Landroid/widget/FrameLayout;.startActionModeForChild (Landroid/view/View;Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
11-02 21:48:20.437 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6f at 0x0002
11-02 21:48:20.453 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.content.Context.getColorStateList, referenced from method android.support.v7.content.res.AppCompatResources.getColorStateList
11-02 21:48:20.453 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 449: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList;
11-02 21:48:20.453 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006
11-02 21:48:20.460 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.widget.ResourcesWrapper.getDrawable
11-02 21:48:20.460 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 684: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
11-02 21:48:20.460 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
11-02 21:48:20.460 3433-3433/com.example.alarm.alarmmanagertest I/dalvikvm: Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.widget.ResourcesWrapper.getDrawableForDensity
11-02 21:48:20.460 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve virtual method 686: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
11-02 21:48:20.460 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
11-02 21:48:20.476 3433-3433/com.example.alarm.alarmmanagertest E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
11-02 21:48:20.476 3433-3433/com.example.alarm.alarmmanagertest W/dalvikvm: VFY: unable to resolve instanceof 149 (Landroid/graphics/drawable/RippleDrawable;) in Landroid/support/v7/widget/AppCompatImageHelper;
11-02 21:48:20.476 3433-3433/com.example.alarm.alarmmanagertest D/dalvikvm: VFY: replacing opcode 0x20 at 0x000c
11-02 21:48:20.648 3433-3438/com.example.alarm.alarmmanagertest D/dalvikvm: GC_CONCURRENT freed 235K, 20% free 5386K/6664K, paused 5ms+6ms, total 32ms
11-02 21:48:20.656 3433-3433/com.example.alarm.alarmmanagertest E/MainActivity: onCreate
11-02 21:48:20.906 3433-3433/com.example.alarm.alarmmanagertest D/libEGL: loaded /system/lib/egl/libEGL_MRVL.so
11-02 21:48:20.960 3433-3433/com.example.alarm.alarmmanagertest D/libEGL: loaded /system/lib/egl/libGLESv1_CM_MRVL.so
11-02 21:48:20.976 3433-3433/com.example.alarm.alarmmanagertest D/libEGL: loaded /system/lib/egl/libGLESv2_MRVL.so
11-02 21:48:20.992 3433-3433/com.example.alarm.alarmmanagertest D/GC: <tid=3433> OES20 ===> GC Version : GC Ver SS_rls_pxa988_JB42_R1_RC2_GC13.15
11-02 21:48:21.046 3433-3433/com.example.alarm.alarmmanagertest D/OpenGLRenderer: Enabling debug mode 0

非应用 Logcat:

1-02 21:59:45.765 515-617/? V/AlarmManager: trigger ELAPSED_REALTIME_WAKEUP or RTC_WAKEUP
11-02 21:59:49.914 515-592/? I/Monitor: SIOP:: Current AP = 380, CP = 0, PST = 380
11-02 21:59:52.914 515-607/? D/BatteryService: update start
11-02 21:59:52.921 515-607/? D/BatteryService: level:100, scale:100, status:3, health:2, present:true, voltage: 4325, temperature: 220, technology: Li-ion, AC powered:false, USB powered:true, Wireless powered:false, icon:17303457, invalid charger:0, online:4, charge type:1, current avg:450
11-02 21:59:52.921 515-592/? D/BatteryService: Sending ACTION_BATTERY_CHANGED.
11-02 21:59:52.929 775-775/? D/STATUSBAR-BatteryController: onReceive() - ACTION_BATTERY_CHANGED
11-02 21:59:52.929 775-775/? D/STATUSBAR-BatteryController: onReceive() - BATTERY_STATUS_DISCHARGING: tw_stat_sys_battery_usb_not_charge
11-02 21:59:52.953 775-775/? D/STATUSBAR-IconMerger: checkOverflow(390), More:false, Req:false Child:13
11-02 21:59:52.968 775-775/? D/STATUSBAR-PhoneStatusBar: mBrightnessEnablebySettings = true mBrightnessEnablebyBattery = true mBrightnessEnablebyDisableFlag = true
11-02 21:59:57.664 515-615/? I/PowerManagerService: [PWL] Off : 105s ago
11-02 21:59:59.921 515-592/? I/Monitor: SIOP:: Current AP = 380, CP = 0, PST = 380
11-02 21:59:59.992 515-617/? V/AlarmManager: waitForAlarm result :8
11-02 22:00:00.007 3817-3817/? D/KeyguardClockWidgetService: onReceive action=android.intent.action.TIME_TICK
11-02 22:00:00.015 515-592/? V/AlarmManager: ClockReceiver onReceive() ACTION_TIME_TICK
11-02 22:00:00.054 775-775/? D/STATUSBAR-IconMerger: checkOverflow(390), More:false, Req:false Child:13
11-02 22:00:03.015 515-607/? D/BatteryService: update start
11-02 22:00:05.039 515-595/? W/ProcessStats: Skipping unknown process pid 14477
11-02 22:00:05.039 515-595/? W/ProcessStats: Skipping unknown process pid 14479
11-02 22:00:05.039 515-595/? W/ProcessStats: Skipping unknown process pid 14480
11-02 22:00:09.929 515-592/? I/Monitor: SIOP:: Current AP = 380, CP = 0, PST = 380
11-02 22:00:12.062 515-837/? E/Watchdog: !@Sync 1050
11-02 22:00:12.078 515-617/? V/AlarmManager: waitForAlarm result :4

您可以看到,AlarmManager 中有一些东西,但我认为它来自其他应用程序。我是否应该停止我尝试使用 AlarmManager 的其他应用程序并重新启动我的设备?

最佳答案

你的 <receiver>Alarm 的 list 中阻止广播接收器不正确。 name属性需要类的 FQN 或简写 ".Alarm" ,假设该类是在 list 文件顶部声明的包的一部分。

关于java - 通过 AlarmManager 发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40379812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com