-2

我必须每天结束时从我的 android 应用程序通过电子邮件发送报告。如何安排任务每天执行一次。如果互联网不可用,则在互联网恢复时发送报告。请帮助我..

提前谢谢..

4

3 回答 3

1

对于时间表,您肯定必须看到 AlarmManager http://developer.android.com/reference/android/app/AlarmManager.html

于 2013-09-06T07:24:41.727 回答
1

您需要使用 AlarmManager 在特定周期或不同时间间隔触发警报..设置广播接收器以触发警报..并启动意图服务以在后台发送电子邮件

在 mainactivity 中接收警报的示例类:

public void setRepeatingAlarm()
{

     Intent intent = new Intent(this, ReceiveAlarm.class);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
        intent, PendingIntent.FLAG_CANCEL_CURRENT);
      am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
        (10000 * 1000), pendingIntent);
}

广播接收器:

public class ReceiveAlarm extends BroadcastReceiver {


     @Override
     public void onReceive(Context context, Intent intent) {         
         context.startService(new Intent(context, InService.class));
     }
}

意图服务类示例:

 public class InService extends IntentService
    {
        public InService() {
            super("InService");
            // TODO Auto-generated constructor stub
        }

    @Override
    protected void onHandleIntent(Intent intent) {

//send email here
}

}

在标签内的清单中声明您的广播接收器/服务类

<receiver android:name="ReceiveAlarm" />
<service android:name="InService"></service>
于 2013-09-06T07:25:06.647 回答
0

你听说过 Android 中的服务吗?

1.创建服务

2.使用报警管理器,BroadCastReciever

例如,

service.setInexactRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), REPEAT_TIME, pending);

3.平板开机时的开机动作

例如,

Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())

这是很棒的教程http://www.vogella.com/articles/AndroidServices/article.html这可能会帮助你

于 2013-09-06T07:35:20.443 回答