感谢您花时间阅读我的帖子。
我如何能够将电子邮件的价值(elemeDittext)从create.java保存到活动alarmerservice中的此数组?
中。说 String[] toArr =
是否有人能够提供解决方案或提出任何建议?我已经尝试了多次没有成功。
任何帮助将不胜感激!:)
AlarmService.java
package com.example.pc.achieve;
import android.app.IntentService;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.PowerManager;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
import static android.graphics.Color.GREEN;
public class AlarmService extends IntentService {
SharedPreferences pref;
PowerManager powerManager;
PowerManager.WakeLock wakeLock;
public AlarmService() {
super("");
}
@Override
protected void onHandleIntent(Intent intent) {
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "FCFCFCFC");
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
addNotification();
sendMAIL();
}
public void addNotification() {
NotificationCompat.Builder builder =
new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.icon_transperent)
.setLights(GREEN, 700, 700)
.setContentTitle("Alert!")
.setContentText("This is a reminder");
Intent notificationIntent = new Intent(getApplicationContext(), MainMenu.class);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
// Add as notification
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
builder.setVibrate(new long[] { 0, 1000, 1000, 1000, 1000 });
manager.notify(0, builder.build());
}
public void sendMAIL(){
String getEmail = pref.getString("email", "");
String[] toArr = {getEmail};
m.setTo(toArr);
m.setFrom("notification@gmail.com");
m.setSubject("Alert!");
m.setBody("This is a reminder.");
try {
if(m.send()) {
} else {
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
create.java
package com.example.pc.achieve;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.EditText;
public class Create extends Activity {
SharedPreferences pref;
private EditText subjectEditText;
private EditText descEditText;
EditText emailEditText;
private DBManager dbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
subjectEditText = (EditText) findViewById(R.id.subject_edittext);
descEditText = (EditText) findViewById(R.id.description_edittext);
emailEditText = (EditText) findViewById(R.id.email_edittext);
}
public void btnCreate(View view) {
String email = emailEditText.getText().toString();
pref.edit().putString("email", email).apply();
dbManager = new DBManager(this);
dbManager.open();
final String name = subjectEditText.getText().toString();
final String desc = descEditText.getText().toString();
dbManager.insert(name, desc);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Your deadline has now been created.")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
public void btnSetAlarm(View view) {
startActivity(new Intent(Create.this, Alarm.class));
}
}
您可以使用sharedPreference在另一个活动中获取字符串值:在您的EditText活动中:
全球声明:
SharedPreferences pref;
在两种活动的onCreate()中启动:
pref = PreferenceManager.getDefaultSharedPreferences(this); //Here is my change
onCreate()
中的editText
s初始化:
subjectEditText = (EditText) findViewById(R.id.subject_edittext);
descEditText = (EditText) findViewById(R.id.description_edittext);
emailEditText = (EditText) findViewById(R.id.email_edittext);
在btnCreate()
方法中:
String email = emailEditText.getText().toString();
pref.edit().putString("email", email).apply();
在您的字符串[]活动中:
String getEmail = pref.getString("email", "");
String[] toArr = {getEmail};
希望这会有所帮助。
将其写入共享的首选项和另一个活动检查之前,如果将电子邮件从共享的偏好出现。http://androidopentorials.com/android-sharedpreferences-tutorial-and-example/这是一个很好,很容易理解共享偏好的例子。如果您在运行时需要它,也可以通过意图传递。研究意图和共享偏好。
如果要在运行时存储那些电子邮件地址的字符串,并且以后不需要它们,则在MainAttivity中定义公共静态字符串[],然后从不同的活动中添加值。内部活动(或第一次活动(我的建议))定义
public static String[] emails;
在另一项活动中称其为元素,但为了避免覆盖做这个
int count = MainActivity.emails.length;
MainActivity.emails = new String[count + 1];
MainActivity.emails[count + 1] = "newemail@mail.com";
但是,如果您想保存它并以后使用它以保存在文件中。希望它有帮助!
类似
的东西String[] all_emails= new String[10]; // initialise array
String email= edutText.getText().toString(); // Get text from EditText
all_emails[index] = email; //add to array like... all_emails[0] = email;