2016-03-03 1 views
1

Я смущен и не могу понять, как я могу отправить SMS-сообщение, используя значения, хранящиеся в моей базе данных.Извлеките значения моей базы данных из моей базы данных, а затем используйте их в программном SMS-сообщении?

SMS будет выглядеть следующим образом: ('NAME'... Message content, etc..), тогда сообщение будет отправлено с использованием номеров контактов, введенных пользователем в базе данных sqlite.

Вот код, который я использовал для получения данных во время регистрации.

public class LoginDataBaseAdapter { 
static final String DATABASE_NAME = "login.db"; 
static final int DATABASE_VERSION = 1; 
public static final int NAME_COLUMN = 1; 
// TODO: Create public field for each column in your table. 
// SQL Statement to create a new database. 
static final String DATABASE_CREATE = "create table "+"LOGIN"+ 
     "(" +"ID"+" integer primary key autoincrement,"+ "USERNAME text, PASSWORD text, NAME text, C1 integer, C2 integer); "; 
// Variable to hold the database instance 
public SQLiteDatabase db; 
// Context of the application using the database. 
private final Context context; 
// Database open/upgrade helper 
private DataBaseHelper dbHelper; 
public LoginDataBaseAdapter(Context _context) { 
    context = _context; 
    dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

public LoginDataBaseAdapter open() throws SQLException { 
    db = dbHelper.getWritableDatabase(); 
    return this; 
} 

public void close() 
{ 
    db.close(); 
} 

public SQLiteDatabase getDatabaseInstance() 
{ 
    return db; 
} 

public void insertEntry(String userName,String password, String name, String cn1, String cn2) { 
    ContentValues newValues = new ContentValues(); 
    // Assign values for each row. 
    newValues.put("USERNAME", userName); 
    newValues.put("PASSWORD",password); 
    newValues.put("NAME",name); 
    newValues.put("C1", cn1); 
    newValues.put("C2", cn2); 

    // Insert the row into your table 
    db.insert("LOGIN", null, newValues); 
    // Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show(); 
} 

public int deleteEntry(String UserName) { 
    //String id=String.valueOf(ID); 
    String where="USERNAME=?"; 
    int numberOFEntriesDeleted= db.delete("LOGIN", where, new String[]{UserName}) ; 
    // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show(); 
    return numberOFEntriesDeleted; 
} 

public String getSingleEntry(String userName) { 
    Cursor cursor = db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null); 
    if(cursor.getCount()<1) { // username doesn't exist 
     cursor.close(); 
     return "NOT EXIST"; 
    } 
    cursor.moveToFirst(); 
    String password = cursor.getString(cursor.getColumnIndex("PASSWORD")); 
    cursor.close(); 
    return password; 
} 

public boolean isExist (String userName) { 
    boolean exists; 
    Cursor cursor = db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null); 
    if (cursor.getCount()>0) { // username exists 
     exists = true; 
     cursor.close(); 
     return exists; 
    } 
    return false; 
} 

public void updateEntry(String userName,String password) { 
    // Define the updated row content. 
    ContentValues updatedValues = new ContentValues(); 
    // Assign values for each row. 
    updatedValues.put("USERNAME", userName); 
    updatedValues.put("PASSWORD", password); 

    String where="USERNAME = ?"; 
    db.update("LOGIN",updatedValues, where, new String[]{userName}); 
}} 

А вот SignUpActivity

public class SignUpActivity extends AppCompatActivity { 

Button bSignup; 
TextView tvSign; 
EditText etUN, etPW, etPW2, etFN, etC1, etC2; 
LoginDataBaseAdapter loginDataBaseAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sign_up); 
    loginDataBaseAdapter = new LoginDataBaseAdapter(this); 
    loginDataBaseAdapter = loginDataBaseAdapter.open(); 

    bSignup = (Button)findViewById(R.id.bSignup); 
    tvSign = (TextView)findViewById(R.id.tvSign); 
    etUN = (EditText)findViewById(R.id.etUN); 
    etPW = (EditText)findViewById(R.id.etPW); 
    etPW2 = (EditText)findViewById(R.id.etPW2); 
    etFN = (EditText)findViewById(R.id.etFN); 
    etC1 = (EditText)findViewById(R.id.etC1); 
    etC2 = (EditText)findViewById(R.id.etC2); 

    bSignup.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String username = etUN.getText().toString(); 
      String password = etPW.getText().toString(); 
      String password2 = etPW2.getText().toString(); 
      String name = etFN.getText().toString(); 
      String c1 = etC1.getText().toString(); 
      String c2 = etC2.getText().toString(); 

      // check if fields are vacant 
      if (username.equals("") || password.equals("") || password2.equals("") || name.equals("") 
        || c1.equals("")|| c2.equals("")) { 
       Toast.makeText(getApplicationContext(), "Incomplete Data", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      // check if passwords 1 and 2 match 
      if (!password.equals(password2)) { 
       Toast.makeText(getApplicationContext(), "Passwords don't match. Please try again.", Toast.LENGTH_LONG).show(); 
       return; 
      } 

      //check is username is still available for use 
      if (loginDataBaseAdapter.isExist(username)){ 
       Toast.makeText(getApplicationContext(),"Username already taken. Please try again.", Toast.LENGTH_LONG).show(); 
       return; 
      } 

      else { 
      // allow data to be saved in the database 
       loginDataBaseAdapter.insertEntry(username, password, name, c1, c2); 
       Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); 

       Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(intent); 
      } 
     } 
    }); 

    tvSign.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
      startActivity(intent); 
     } 
    }); 

} 
} 

После того, как я вошел в систему, как я могу получить эти значения ("т.е. NAME, C1 и C2") и отправить SMS, нажав кнопка?

Update

Я использовал это на моем LoginDataBaseAdapter.

public HashMap<String, String> getUserDetails(){ 
    HashMap <String,String> user = new HashMap <String,String>(); 
    String selectQuery = "SELECT * FROM " + "LOGIN"; 

    Cursor cursor = db.rawQuery(selectQuery, null); 
    // Move to first row 
    cursor.moveToFirst(); 
    if(cursor.getCount()>0){ 
     user.put("USERNAME", cursor.getString(1)); 
     user.put("PASSWORD", cursor.getString(2)); 
     user.put("NAME", cursor.getString(3)); 
     user.put("C1", cursor.getString(4)); 
     user.put("C2", cursor.getString(5)); 
    } 
    cursor.close(); 
    db.close(); 
    // return user 
    return user; 
} 

Затем этот код в моем HomeActivity:

tvHello = (TextView)findViewById(R.id.tvHello); 
    HashMap <String, String> details = loginDataBaseAdapter.getUserDetails(); 
    String name_text = details.get("NAME"); 
    tvHello.setText("Welcome " + name_text); 

кажется, что он может получить только первую запись, а не текущая запись для текущего пользователя. Любые идеи для решения этой проблемы? Большое спасибо.

ответ

0

Удаленный доступ к нему. Поэтому я отвечу на свой вопрос.

Создайте область editText, в которой вы укажете свое имя для извлечения. Затем воспользуйтесь этим кодом для его получения.

public String getData(String verif) { 
    Cursor cursor = db.query("LOGIN", null, " USERNAME=?", new String[]{verif}, null, null, null); 
    if(cursor.getCount()<1) { 
     cursor.close(); 
     return "No records exist"; 
    } 
    cursor.moveToFirst(); 
    String get_name = cursor.getString(cursor.getColumnIndex("NAME")); 
    cursor.close(); 
    return get_name; 
} 

После получения задайте имя в TextView. Затем преобразовать его в строку следующим образом:

String myName = myTextView.getText().toString(); 

Тогда:

smsManager.sendTextMessage(number, null, "My name is "+ myName ,null, 
null); 

«номер» является строка, содержащая номер контакта, где вы хотите, чтобы отправить SMS

Смежные вопросы