public class LockScreen extends Activity { private static final String TAG = "QDataBase"; private String password = ""; private String master = "010101"; private int count = 0; private int master_count = 0; CountDownTimer mCountDownTimer = null; int secondsLeft = 0; private TextView Tvinfo = null; public Context mContext; //단축 번호 전화걸기를 위한 DB 호출 private Cursor mCursor = null; private String pnum; private SQLiteDatabase temp; private SQLiteOpenHelper db; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rock_main); Tvinfo = (TextView) findViewById(R.id.tv_info); HomeKeyLocker homeKeyLocker = new HomeKeyLocker(); homeKeyLocker.lock(this); final TextView TvTimer = (TextView) findViewById(R.id.tv_timer); temp = db.getReadableDatabase(); findViewById(R.id.iv_touch).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e(LockScreen.class.getSimpleName(), "0"); SharedPreferences pass = getSharedPreferences("pass", MODE_PRIVATE); password += "0"; Tvinfo.setText(password); if (password.length() == 6) { if (count < 5) { if ((pass.getString("path","").equals(password))) { finish(); } mCursor = temp.rawQuery("select * from " + "QDList " + "where patt = " + password, null); //password가 DB의 patt column 중에 있다면 해당 row의 num을 받아서 전화걸기 if (mCursor != null){ pnum = mCursor.getString(mCursor.getColumnIndex("num")); Log.e(TAG, pnum); Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+pnum)); startActivity(intent); }
마지막 난관인데... temp = db.getReadableDatabase(); 에서 자꾸 NullPointerException이 뜹니다.
DB를 받아서 그 중 입력된 코드와 동일한 코드를 보유한 row가 있는지 확인하고, 그 row의 'telnum'을 받아 전화를 걸려고 하는데,
DB만 받으면 될 것 같은데...
아, 그리고 코드를 기준으로 쿼리를 받은 후 mCursor.getString(mCursor.getColumnIndex("num")); 하면 그 row의 'num'값을 받으려나요.
this.context = context;
this.opener = new OpenHelper(context, dbName, null, dbVersion);
db = opener.getWritableDatabase();
}
타 코드에서 잘라왔는데, 3번째 줄처럼 먼저 db 속성 지정이 필요할것 같네요.