首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xamarin中写入启动程序的权限

如何在xamarin中写入启动程序的权限
EN

Stack Overflow用户
提问于 2016-11-24 06:16:00
回答 1查看 463关注 0票数 1

我想写一个能在开机时自动运行的程序。我想在某些时间每天显示来自此程序的通知。用户将设置这些通知的时间。我正在用sqlite在数据库中注册它。我已经在我为其编写的程序中定义了广播接收器和服务。我正在使用待定意图创建通知。因此,当手机关机时,用户正在生成的通知就会消失。我的类是这样的:

BootCompleted类: BroadcastReceiver

AlarmReceiver类: BroadcastReceiver

类AutoStartUp:服务

在我的AndroidManifest中,我做了以下定义:

代码语言:javascript
复制
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application android:label="myprogram">
    <receiver
      android:name=".ReminderService.BootCompleted"
      android:enabled="true"
      android:exported="false">
      <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
      </intent-filter>
    </receiver>
    <service android:name=".ReminderService.AutoStartUp">
    </service>
  </application>

因此,当我在手机上安装这个程序并尝试它时,出现了问题。因此,当我以用户身份创建通知,然后关闭和打开手机时,我得到一个错误,如“程序停止工作”。这一切为什么要发生?

我的BootCompleted类是extend

代码语言:javascript
复制
    [BroadcastReceiver]
    [IntentFilter(new[] { Android.Content.Intent.ActionBootCompleted })]
    public class BootCompleted : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            Log.Debug("BroadcastReceiverBoot", "BootCompleted");
            if (intent.Action.Equals("android.intent.action.BOOT_COMPLETED"))
            {
                Intent serviceIntent = new Intent(context, typeof(AutoStartUp));
                context.StartService(serviceIntent);
            }
        }
    }

我的AlarmReceiver类是extend

代码语言:javascript
复制
[BroadcastReceiver]
    [IntentFilter(new[] { Android.Content.Intent.ActionBootCompleted })]
    public class AlarmReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {

                var message = intent.GetStringExtra("message");
                var title = intent.GetStringExtra("title");

                var notIntent = new Intent(context, typeof(MainActivity));
                notIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);
                var contentIntent = PendingIntent.GetActivity(context, 0, notIntent,
                    PendingIntentFlags.CancelCurrent);
                var manager = NotificationManagerCompat.From(context);

                var style = new NotificationCompat.BigTextStyle();
                style.BigText(message);

                var builder = new NotificationCompat.Builder(context)
                                .SetContentIntent(contentIntent)
                                .SetSmallIcon(Resource.Drawable.icon)
                                .SetContentTitle(title)
                                .SetContentText(message)
                                .SetStyle(style)
                                .SetAutoCancel(true);

                var notification = builder.Build();
                manager.Notify(DateTime.Now.Millisecond, notification);
        }
    }

我的AutoStartUp类是扩展服务

代码语言:javascript
复制
class AutoStartUp : Service
    {
        public override IBinder OnBind(Intent intent)
        {
            return null;
        }

        public override void OnCreate()
        {
            try
            {
                Toast.MakeText(this, "boot1", ToastLength.Long).Show();
                AndroidReminderService.BootRemind(DateTime.Now, "Boot Control", "Phone Opened!", DateTime.Now.Hour, DateTime.Now.Minute + 2, DateTime.Now.Second);
                Toast.MakeText(this, "boot2", ToastLength.Long).Show();
            }
            catch (Exception e)
            {
                Toast.MakeText(this, e.Message, ToastLength.Long).Show();
                throw;
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2016-11-24 06:19:38

尝试将它们添加到broadcastreceiver类中

代码语言:javascript
复制
[BroadcastReceiver]
[IntentFilter(new[] { Android.Content.Intent.ActionBootCompleted })]
class BroadcastReceiverBoot : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        Log.Debug("BroadcastReceiverBoot", "Boot Completed ");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40775037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档