我想在我的项目中实现一个计划功能.所以我用Google搜索了一个报警管理器程序,但我找不到任何例子.
任何人都可以帮我一个基本的报警管理程序吗?
从我在Stack Exchange和其他地方看到的所有东西,我已经正确设置了所有东西,以便在Android OS启动时启动IntentService.不幸的是它没有启动,我没有收到任何错误.也许专家可以提供帮助......
表现:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.phx.batterylogger"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".BatteryLogger"/>
<receiver android:name=".StartupIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
BroadcastReceiver for Startup:
package com.phx.batterylogger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartupIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, BatteryLogger.class);
context.startService(serviceIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
更新:我尝试了下面的所有建议,并且我将日志记录添加Log.v("BatteryLogger", "Got to onReceive, …
我正在尝试在我的BOOT_COMPLETED接收器中启动一个IntentService,但在Android O(API 26)中,我得到:
java.lang.RuntimeException:
java.lang.IllegalStateException:
Not allowed to start service Intent { act=intent.action.update cmp=packageName.services.OwnService }:
app is in background
Run Code Online (Sandbox Code Playgroud)
(消息在一行中,但这样更易读)
我怎么能以正确的方式做到这一点?
android bootcompleted android-broadcastreceiver android-8.0-oreo
即使我的应用程序已关闭,我也试图在Android通知栏中显示通知.
我试过搜索,但我没有找到帮助的运气.
一个例子是新闻应用程序.即使手机屏幕关闭或新闻应用程序关闭,它仍然可以发送最近新闻的通知并将其显示在通知栏中.
我如何在自己的应用程序中执行此操作?
我想在其设置中创建一个具有自动启动选项的应用程序.我在我的应用程序中创建了一个从PreferenceActivity派生的Settings活动,并为自动启动选项提供CheckBoxPreference.如果启用了自动启动选项,我的应用程序应在启动手机时启动.如果禁用了自动启动选项,则它不应在启动完成时启动.
为了实现这一点,我实现了BroadcastReceiver的派生类,它接收BOOT_COMPLETED意图,在AndroidManifest.xml中声明接收器,并在AndroidManifest.xml中授予权限.
在应用程序中,还有一个派生类的Application和启动服务也来自应用程序派生类的onCreate方法.如果我在AndroidManifest.xml中声明接收器,那么在启动我的应用程序的onCreate之后调用,然后调用BroadcastReceiver的onReceive方法.
现在的问题是,无论是启用还是禁用自动启动,我的应用程序每次启动都会启动.禁用自动启动时是否可以不启动应用程序?
Status:---我同样接受Karakuri的和沙拉德Mhaske的答案,但由于沙拉德Mhaske回答之后的赏金的开始,赏金应该去他.
第2 部分:第2 部分持续foreGround android服务,由UI启动,也在睡眠模式下工作,也从手机重启开始
在stack overflow,只有一个答案可以接受.我认为这两个答案都是可以接受的,但必须选择一个(我随机选择).
观众被邀请上/下投票答案/问题,以欣赏努力!.我赞成Karakuri的答案来弥补声誉.
Scenario:---
我想让用户单击开始/停止按钮并从UI活动启动/停止服务.我已经制作了用户界面,所以不关心它.但只是按钮点击事件的逻辑.
难道不希望该服务绑定到用户界面活动.如果活动关闭,服务应继续运行.
想要尽最大努力保持服务的持久性并且在任何情况下都不会停止.将它赋予最大的权重并运行它,ForGroundSerice因为它具有更高的重要性层次.(希望没问题?)
除非我的应用程序用户界面点击了停止按钮,否则不要让它停止(或者应该重新启动)即使android回收内存.我和手机用户都知道了.这项服务至关重要.即使在睡觉.
details =我的应用程序执行一些操作,为用户提供的时间(通常为15分钟)休眠,唤醒并再次执行操作.这永远不会结束)
如果我需要AlarmManager,如何实现?或任何其他方式?或者只是把操作放在while loop and sleep for 15 minuts最后?
启动服务时(通过单击"开始"按钮).它应该输入一个条目,以便在手机重启时自动启动.
QUESTION:---
Primary Question:
只是无法为场景获得最佳策略 …
android android-intent android-service android-alarms android-backup-service
我已经按照Firebase快速入门消息传递教程,我遇到了问题.
我想在系统启动时启动两个服务(MyFirebaseMessagingService和MyFirebaseInstanceIDService).
为此,我已将RECEIVE_BOOT_COMPLETED权限添加到我的AndroidManifest.xml.
我也把它添加到Manifest:
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
在我的AutoStart班上,有这样的:
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, MyFirebaseInstanceIDService.class));
context.startService(new Intent(context, MyFirebaseMessagingService.class));
}
Run Code Online (Sandbox Code Playgroud)
这两项服务与我上面提供的链接几乎相同.我MainActivity只包含一些Views.
但它不起作用:一旦服务启动,服务就会自动终止,我在logcat中收到这样的消息:
I/ActivityManager? Killing 3100:com.company.E/u0a85 (adj 15): empty #17
Run Code Online (Sandbox Code Playgroud)
我已经搜索了关于这个"杀戮问题"的解决方案,我想我在这里找到了一些有趣的东西(关于WakefulBroadcastReceiver).
如果这部分解决方案,我遇到了这个答案的另一个问题...... onHandleIntent()他谈到的覆盖方法是IntentService我的两个服务所在的一部分Service.
如果这不是解决方案的一部分,我不知道如何防止我的应用程序被杀死 ...
这是我Service从一个按钮点击调用Activity.如果我Activity在Service运行时向左滑动它会崩溃.我也尝试通过放入android:process=":remote"清单在单独的过程中运行它,但它仍然是相同的.
@Override
public void onCreate(){
super.onCreate();
Log.d("Service", "Creating");
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
return null;
}
@Override
public int onStartCommand (Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);
Log.d("Started", "Service");
type = intent.getIntExtra("Type",-1);
mode = intent.getIntExtra("Mode",-1);
rank = intent.getIntExtra("Rank", -1);
latitude = intent.getDoubleExtra("Lat", -1.0);
longitude = intent.getDoubleExtra("Long", -1.0);
startTime = intent.getLongExtra("Start", 0);
endTime = intent.getLongExtra("End", 0);
Run Code Online (Sandbox Code Playgroud)
我得到的错误是: …
我正在制作一个Android应用程序,它将有两个服务,将每24小时不断发送用户使用手机的数据.
用户应该执行应用程序,切换按钮以启用手机使用记录,然后用户应该可以使用手机正常生活,直到他再次启动应用程序并禁用切换按钮停止记录信息.
所有信息都非常感谢,因为我的想法让这一切变得有点不知所措!
非常感谢大家!
当应用程序完全关闭时,我正在尝试在 Xamarin 中处理 GCM 推送通知。按照 Xamarin 推送通知教程,我可以从 GCM 接收远程/推送通知,但是一旦我关闭应用程序,我就没有收到。这是我迄今为止尝试过的:
1.广播接收器:
public class MyGCMBroadcastReceiver : BroadcastReceiver {
public override void OnReceive (Context context, Intent intent)
{
Intent gcmListenerServiceIntent = new Intent(context,typeof(MyGcmListenerService));
Console.WriteLine ("Starting Broadcast Receiver...");
context.StartService (gcmListenerServiceIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
显现:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="za.co.snappyhome.snappy.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.CAMERA" …Run Code Online (Sandbox Code Playgroud)