http://www.eoeandroid.com/thread-188604-1-1.html
由于同学要求,希望有人能定点打电话给她,故开发了这个小程序,如果有人要更多的功能,可以提!
主界面,设置时间并且时间到发送广播
需要了解下PendingIntent ,AlarmManager,Broadcast
package com.zhuyan;
import java.util.Calendar;
import com.zhuyan.broadcast.AlarmReceiver;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
public class TimingDialActivity extends Activity {
/\*\* Called when the activity is first created. \*/
private static final String TAG = "TimingDialActivity";
Button mButtonStart;
Button mButtonStop;
EditText telPhoneEditText;
TextView mTextView;
Calendar calendar;
/\*\* Called when the activity is first created. \*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
calendar \= Calendar.getInstance();
mTextView \= (TextView) findViewById(R.id.phone\_view);
mButtonStart \= (Button) findViewById(R.id.set\_time);
mButtonStop \= (Button) findViewById(R.id.cancel\_time);
telPhoneEditText \= (EditText) findViewById(R.id.tel\_number);
mButtonStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
calendar.setTimeInMillis(System.currentTimeMillis());
int mHour = calendar.get(Calendar.HOUR\_OF\_DAY);
int mMinute = calendar.get(Calendar.MINUTE);
new TimePickerDialog(TimingDialActivity.this,
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view,
int hourOfDay, int minute) {
calendar.setTimeInMillis(System
.currentTimeMillis());
calendar.set(Calendar.HOUR\_OF\_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute \- 1);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Intent intent \= new Intent(
TimingDialActivity.this,
AlarmReceiver.class);
intent.putExtra("tel\_phone", telPhoneEditText
.getText().toString());
PendingIntent pendingIntent \= PendingIntent
.getBroadcast(TimingDialActivity.this,
0, intent, 0);
AlarmManager am;
am \= (AlarmManager) getSystemService(ALARM\_SERVICE);
// am.set(AlarmManager.RTC\_WAKEUP, calendar
// .getTimeInMillis(), pendingIntent);
am.setRepeating(AlarmManager.RTC\_WAKEUP,
calendar.getTimeInMillis(),
(24 \* 60 \* 60 \* 1000), pendingIntent);
SharedPreferences preference \= getSharedPreferences("zhuyan",
Context.MODE\_PRIVATE);
Editor edit \= preference.edit();
edit.putString("tel\_phone", telPhoneEditText.getText().toString());
edit.commit();
String tmpS \= telPhoneEditText.getText()
.toString()
\+ "->"
+ format(hourOfDay)
\+ ":" + format(minute);
mTextView.setText(tmpS);
}
}, mHour, mMinute, true).show();
}
});
mButtonStop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent \= new Intent(TimingDialActivity.this,
AlarmReceiver.class);
PendingIntent pendingIntent \= PendingIntent.getBroadcast(
TimingDialActivity.this, 0, intent, 0);
AlarmManager am;
am \= (AlarmManager) getSystemService(ALARM\_SERVICE);
am.cancel(pendingIntent);
mTextView.setText("Cancelled");
}
});
}
private String format(int x) {
String s \= "" + x;
if (s.length() == 1)
s \= "0" + s;
return s;
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
SharedPreferences preference \= getSharedPreferences("zhuyan",
Context.MODE\_PRIVATE);
telPhoneEditText.setText(preference.getString("tel\_phone","10086"));
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
SharedPreferences preference \= getSharedPreferences("zhuyan",
Context.MODE\_PRIVATE);
Editor edit \= preference.edit();
edit.putString("tel\_phone", telPhoneEditText.getText().toString());
edit.commit();
}
}
//broadcast 接受广播
package com.zhuyan.broadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class AlarmReceiver extends BroadcastReceiver {
private final static String TAG = "AlarmReceiver";
private Context context;
private String telNumber = "10086";
public void onReceive(Context context, Intent intent) {
this.context = context;
SharedPreferences preference \=context.getSharedPreferences("zhuyan",
Context.MODE\_PRIVATE);
telNumber\=preference.getString("tel\_phone","10086");
PhoneCall();
}
private void PhoneCall() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Uri localUri \= Uri.parse("tel:" + telNumber);
Intent call \= new Intent(Intent.ACTION\_CALL, localUri);
call.setFlags(Intent.FLAG\_ACTIVITY\_NEW\_TASK);