Android设置系统提醒


android中使用闹钟进行提醒其实非常简单,你只需要告知系统你想在什么时候被提醒,然后需要一个闹钟的广播接收器,当到你设置的时间时,系统会给你发送一条广播,当你接收到广播后你就可以做一些操作,比如启动你的app,或者跳转到你app中的任何一个界面。

主activity代码:

package com.example.alarmactivity;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView tv=(TextView)findViewById(R.id.text);
        tv.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				alarmuUp(MainActivity.this);
				tv.setBackgroundColor(0xff00ff00);
			}

			private void alarmuUp(Context mContent) {
				
				Intent intent=new Intent(mContent,AlarmReceiver.class);
				intent.setAction("something");
				intent.setType("something");
				intent.setData(Uri.EMPTY);
				intent.addCategory("something");
				// 以上给intent设置的四个属性是用来区分你发给系统的闹钟请求的,当你想取消掉之前发的闹钟请求,这四个属性,必须严格相等,所以你需要一些比较独特的属性,比如服务器返回给你的json中某些特定字段。
				//当然intent中也可以放一些你要传递的消息。
				PendingIntent pendingIntent=PendingIntent.getBroadcast(mContent, 1, intent, 0);
				//alarmCount是你需要记录的闹钟数量,必须保证你所发的alarmCount不能相同,最后一个参数填0就可以。
				AlarmManager am=(AlarmManager)mContent.getSystemService(mContent.ALARM_SERVICE);
				am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+120000, pendingIntent);
				//这样闹钟的请求就发送出去了。time是你要被提醒的时间,单位毫秒,注意不是时间差。第一个参数提醒的需求用我给出的就可以,感兴趣的朋友,可以去google一下,这方面的资料非常多,一共有种,看一下就知道区别了。
				//System.currentTimeMillis()是获取系统时间 ,+120000是120秒即两分钟后提醒
			}
		});
    }

}

广播接收代码:

package com.example.alarmactivity;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;

public class AlarmReceiver extends BroadcastReceiver{

	 private NotificationManager manager;
     
	    @Override
	    public void onReceive(Context context, Intent intent) {
	        manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
	        //例如这个id就是你传过来的
	        String id = intent.getStringExtra("id");
	                //MainActivity是你点击通知时想要跳转的Activity
	        Intent playIntent = new Intent(context, Reciver.class);
	        playIntent.putExtra("id", id);
	        PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
	        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
	        builder.setContentTitle("title").setContentText("提醒内容").setSmallIcon(R.drawable.ic_launcher).setDefaults(Notification.DEFAULT_ALL).setContentIntent(pendingIntent).setAutoCancel(true).setSubText("二级text");
	        manager.notify(1, builder.build());
	    }


}

任务栏提醒后点击跳转到Reciver界面:

package com.example.alarmactivity;

import android.app.Activity;
import android.os.Bundle;

public class Reciver extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.reciver);
	}

}

Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.alarmactivity"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver
            android:name=".AlarmReceiver"
            ></receiver>
        <activity 
            android:name=".Reciver"
            ></activity>
    </application>

</manifest>


结束。


没有更多推荐了,返回首页