Android中BroadCastService类中的Nullpointer异常
我必须在特定日期发送电子邮件,这就是我使用BroadcastReceiver类的原因。但是,当我运行应用程序时,它会崩溃,并在行=Intent Intent Intent=new Intent(context,AlarmManagerBroadcastReceiver.class);。有人能帮我怎么做吗?提前谢谢 这是我的密码Android中BroadCastService类中的Nullpointer异常,android,broadcastreceiver,alarmmanager,Android,Broadcastreceiver,Alarmmanager,我必须在特定日期发送电子邮件,这就是我使用BroadcastReceiver类的原因。但是,当我运行应用程序时,它会崩溃,并在行=Intent Intent Intent=new Intent(context,AlarmManagerBroadcastReceiver.class);。有人能帮我怎么做吗?提前谢谢 这是我的密码 public class Xyz extends Activity { EditText etServiceName; EditText etSuppli
public class Xyz extends Activity
{
EditText etServiceName;
EditText etSupplierName;
EditText etEmailId;
EditText etReplacementDate;
EditText etInterval_Days;
EditText etNextReplanishmentDate;
Button btnSubmit;
String strServiceName;
String strSuppliername;
String strEmail;
String strReplacementDate;
String strIntervalDays;
String strNextReplacementDate;
String body;
Date convertedDate;
int interval_days;
private int year;
private int month;
private int day;
int i;
static final int DATE_OF_REPLACEMENT = 1111;
int intConvertDays;
String strMinusDate;
int IntMinusDate;
Context context;
Calendar cal=Calendar.getInstance();
Database_Helper databaseHelper;
SQLiteDatabase db;
public void onCreate(Bundle savedInstanceState)
{
etInterval_Days.addTextChangedListener(新的TextWatcher(){
@覆盖
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑)
{
//TODO自动生成的方法存根
String fixedDate=etReplacementDate.getText().toString().trim();
SimpleDataFormat dateFormat1=新的SimpleDataFormat(“dd-MM-yyyy”);
Calendar cal=Calendar.getInstance();
尝试
{
cal.setTime(dateFormat1.parse(fixedDate));
}
捕获(解析异常)
{
//TODO自动生成的捕捉块
e、 printStackTrace();
}
字符串strNumDays=etInterval_Days.getText().toString().trim();
如果(strNumDays.trim().length()>0)
{
尝试
{
intConvertDays=整数.valueOf(strNumDays);
}
捕获(数字格式)
{
System.out.println(“无法解析::”+ne);
}
}
cal.add(Calendar.DATE,天);
日期=cal.getTime();
String beforDate_String=新的SimpleDateFormat(“dd-MM-yyyy”)。格式(日期);
System.out.println(“beforDate\u字符串:“+beforDate\u字符串”);
etNextReplanishmentDate.setText(beforDate_字符串);
cal.add(Calendar.DATE,-2);
Date minusDate=cal.getTime();
strMinusDate=新的SimpleDateFormat(“dd-MM-yyyy”)。格式(minusDate);
System.out.println(“字符串strMinusDate:+strMinusDate”);
如果(strMinusDate.trim().length()>0)
{
尝试
{
IntMinusDate=整数.valueOf(strMinusDate);
System.out.println(“intminsDate=“+intminsDate”);
}
捕获(数字格式)
{
System.out.println(“无法解析::”+ne);
}
}
}
});
btnSubmit=(按钮)findViewById(R.id.buttonsSubmit);
btnSubmit.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
strEmail=etEmailId.getText().toString().trim();
strServiceName=etServiceName.getText().toString().trim();
strSuppliername=etSupplierName.getText().toString().trim();
strReplacementDate=etReplacementDate.getText().toString().trim();
striintervaldays=etInterval_Days.getText().toString().trim();
strNextReplacementDate=etnextreplacementDate.getText().toString().trim();
System.out.println(“数据:“-”+strServiceName+”、“+strSuppliername+”、“+strEmail+”、“+strReplacementDate+”、“+strIntervalDays+”、“+strNextReplacementDate+”、“+strMinusDate”);
SharedReferences SharedReferences=GetSharedReferences(“MyPref_电子邮件”,0);
SharedPreferences.Editor编辑器1=sharedPref.edit();
editor1.putString(“ServiceName”,strServiceName);
editor1.putString(“供应商名称”,strSuppliername);
editor1.putString(“电子邮件”,strEmail);
editor1.putString(“ReplacementDate”,strReplacementDate);
editor1.putString(“IntervalDays”,strivaldays);
editor1.putString(“NextReplacementDate”,strNextReplacementDate);
editor1.putString(“EmailDate”,strMinusDate);
editor1.commit();
Log.e(“提交即完成”、“保存”);
//sendmail();
System.out.println(“必须成功发送电子邮件”);
databaseHelper.insertServicenDetails(strServiceName、strSuppliername、strEmail、strReplacementDate、strIntervalDays、strNextReplacementDate);
System.out.println(“数据已成功保存”);
SimpleDataFormat=新的SimpleDataFormat(“dd-MM-yyy-HH:MM”);
长毫秒=0;
试一试{
millis=format.parse(strMinusDate.getTime();
System.out.println(“millis=“+millis”);
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable editable)
{
// TODO Auto-generated method stub
String fixedDate = etReplacementDate.getText().toString().trim();
SimpleDateFormat dateFormat1 = new SimpleDateFormat( "dd-MM-yyyy" );
Calendar cal = Calendar.getInstance();
try
{
cal.setTime( dateFormat1.parse( fixedDate ) );
}
catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
String strNumDays = etInterval_Days.getText().toString().trim();
if(strNumDays.trim().length()>0)
{
try
{
intConvertDays =Integer.valueOf(strNumDays);
}
catch(NumberFormatException ne)
{
System.out.println("could not parse :: " +ne);
}
}
cal.add( Calendar.DATE, intConvertDays );
Date dated = cal.getTime();
String beforDate_String = new SimpleDateFormat("dd-MM-yyyy").format(dated);
System.out.println("beforDate_String: " + beforDate_String);
etNextReplanishmentDate.setText(beforDate_String);
cal.add( Calendar.DATE, -2 );
Date minusDate = cal.getTime();
strMinusDate = new SimpleDateFormat("dd-MM-yyyy").format(minusDate);
System.out.println("String strMinusDate : " + strMinusDate);
if(strMinusDate.trim().length()>0)
{
try
{
IntMinusDate =Integer.valueOf(strMinusDate);
System.out.println(" IntMinusDate = " + IntMinusDate);
}
catch(NumberFormatException ne)
{
System.out.println("could not parse :: " +ne);
}
}
}
});
btnSubmit = (Button) findViewById(R.id.buttonSubmit);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
strEmail= etEmailId.getText().toString().trim();
strServiceName = etServiceName.getText().toString().trim();
strSuppliername= etSupplierName.getText().toString().trim();
strReplacementDate= etReplacementDate.getText().toString().trim();
strIntervalDays= etInterval_Days.getText().toString().trim();
strNextReplacementDate = etNextReplanishmentDate.getText().toString().trim();
System.out.println("Data :- " + strServiceName +","+ strSuppliername +","+ strEmail +","+ strReplacementDate +","+ strIntervalDays + "," + strNextReplacementDate+" , "+strMinusDate);
SharedPreferences sharedPref =getSharedPreferences("MyPref_Email", 0);
SharedPreferences.Editor editor1 = sharedPref.edit();
editor1.putString("ServiceName", strServiceName);
editor1.putString("Suppliername", strSuppliername);
editor1.putString("Email", strEmail);
editor1.putString("ReplacementDate", strReplacementDate);
editor1.putString("IntervalDays", strIntervalDays);
editor1.putString("NextReplacementDate", strNextReplacementDate);
editor1.putString("EmailDate", strMinusDate);
editor1.commit();
Log.e("Commit is Complit", "Save");
//sendEmail();
System.out.println("Email Has To Be Sent Successfully");
databaseHelper.insertServicenDetails(strServiceName, strSuppliername, strEmail, strReplacementDate, strIntervalDays, strNextReplacementDate);
System.out.println("Data Has Been Save Successfully");
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm");
long millis = 0;
try {
millis = format.parse(strMinusDate).getTime();
System.out.println("millis = " + millis);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.isSet((int) millis);
AlarmManager alarmManager = (AlarmManager) Xyz.this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.set(AlarmManager.RTC, cal.getTimeInMillis(), pi);
Log.d("Testing", "alarm manager set");
}
});
Here is AlarmManagerBroadcastReceiver class
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver
{
String strServiceName;
String strSuppliername;
String strEmail;
String strReplacementDate;
String strIntervalDays;
String strNextReplacementDate;
String strEmailDate;
@Override
public void onReceive(Context con, Intent arg1)
{
// TODO Auto-generated method stub
SharedPreferences prefs = con.getSharedPreferences("MyPref_CellNumber", Context.MODE_PRIVATE);
SharedPreferences.Editor editor1 = prefs.edit();
strServiceName=prefs.getString("ServiceName", "a/n");
strSuppliername=prefs.getString("Suppliername" , "a/n");
strEmail=prefs.getString("Email" , "a/n");
strReplacementDate=prefs.getString("ReplacementDate" , "a/n");
strIntervalDays=prefs.getString("IntervalDays" , "a/n");
strNextReplacementDate=prefs.getString("NextReplacementDate" , "a/n");
strEmailDate = prefs.getString("EmailDate", "a/n");
System.out.println(strServiceName+" , "+strSuppliername+" , "+strEmail+" , "+strReplacementDate+" , "+strIntervalDays+" , "+strNextReplacementDate);
Log.e("ON CREATE" , "=" + strServiceName);
Log.e("ON CREATE" , "=" + strSuppliername);
Log.e("ON CREATE" , "=" + strEmail);
Log.e("ON CREATE" , "=" + strReplacementDate);
Log.e("ON CREATE" , "=" + strIntervalDays);
Log.e("ON CREATE" , "=" + strNextReplacementDate);
Log.e("ON CREATE" , "=" + strEmailDate);
String subject =strServiceName;
String body = strServiceName
+","
+strSuppliername
+","
+strEmail
+","
+strReplacementDate
+","
+strIntervalDays
+","
+strNextReplacementDate
+","
+strEmailDate;
Log.e("body " , " = " + body);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
// i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(Intent.EXTRA_EMAIL , new String[]{strEmail});
i.putExtra(Intent.EXTRA_SUBJECT, subject);
i.putExtra(Intent.EXTRA_TEXT , body);
con.startActivity(Intent.createChooser(i, "Share viaSend mail...in Service Background"));
Log.e("Send Email ="," In My Service ");
System.out.println("Service start time");
}
}
Here is log cat
08-19 18:03:00.396: E/AndroidRuntime(1555): FATAL EXCEPTION: main
08-19 18:03:00.396: E/AndroidRuntime(1555): java.lang.NullPointerException
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.content.ComponentName.<init>(ComponentName.java:75)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.content.Intent.<init>(Intent.java:2702)
08-19 18:03:00.396: E/AndroidRuntime(1555): at com.demo.Xyz$4.onClick(Xyz.java:282)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.view.View.performClick(View.java:2485)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.view.View$PerformClick.run(View.java:9080)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.os.Handler.handleCallback(Handler.java:587)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.os.Handler.dispatchMessage(Handler.java:92)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.os.Looper.loop(Looper.java:123)
08-19 18:03:00.396: E/AndroidRuntime(1555): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-19 18:03:00.396: E/AndroidRuntime(1555): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 18:03:00.396: E/AndroidRuntime(1555): at java.lang.reflect.Method.invoke(Method.java:507)
08-19 18:03:00.396: E/AndroidRuntime(1555): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-19 18:03:00.396: E/AndroidRuntime(1555): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-19 18:03:00.396: E/AndroidRuntime(1555): at dalvik.system.NativeStart.main(Native Method)
Context context; // declared
Context context;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
context = this;
...// rest of the code
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{strEmail});
i.putExtra(Intent.EXTRA_SUBJECT, subject);
i.putExtra(Intent.EXTRA_TEXT , body);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
con.startActivity(Intent.createChooser(i, "Share viaSend mail...in Service Background"));