2016-04-07 14 views
1

最近Androidプログラミングを開始しましたが、ごめんなさい。私はAlamManagerクラスでデータベースクラスのメソッドを使用してアラームを保存しようとしていましたが、どうやって解決したのか分かりませんでした。私は実用的な例をオンラインで見つけようとしましたが、どちらも見つけられませんでした。AndroidでAlarmManagerのSQLデータベースを使用しています

問題は、自分のMainActivityクラスにデータベースクラスの最後の2つのメソッドを追加してもアラームが鳴らないことです。

ご協力いただければ幸いです。

だから、ここに私のコードです:

MainActivity.java

public class MainActivity extends AppCompatActivity { 

DatabaseHandler MyDatabase; 
EditText editText1, editText2; 
Button button1; 
int mHour, mMinute; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    MyDatabase = new DatabaseHandler(this); 

    editText1 = (EditText) findViewById(R.id.editText1); 
    editText2 = (EditText) findViewById(R.id.editText2); 
    button1 = (Button) findViewById(R.id.button1); 

    editText2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onOpenTimePickerDialog(false); 
     } 
    }); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(Calendar.HOUR_OF_DAY, mHour); 
      calendar.set(Calendar.MINUTE, mMinute); 
      calendar.set(Calendar.SECOND, 0); 
      calendar.set(Calendar.MILLISECOND, 0); 

      Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 
      AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
      PendingIntent pIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0); 
      am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent); 
     } 
    }); 
} 

private void onOpenTimePickerDialog(boolean is24r) { 
    Calendar calendar = Calendar.getInstance(); 
    TimePickerDialog timePickerDialog = new TimePickerDialog(
      MainActivity.this, 
      onTimeSetListener, 
      calendar.get(Calendar.HOUR_OF_DAY), 
      calendar.get(Calendar.MINUTE), 
      is24r); 

    timePickerDialog.setTitle("set time"); 
    timePickerDialog.show(); 
} 

TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     mHour = hourOfDay; 
     mMinute = minute; 
    } 
}; 
} 

DatabaseHandler.java

public class DatabaseHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 

private static final String DATABASE_NAME = "friends"; 

private static final String TABLE_NAME = "friends_table"; 

public static final String COL_1 = "ID"; 
public static final String COL_2 = "SUBJECT"; 
public static final String COL_3 = "TIME"; 


public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 


public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, SUBJECT TEXT, TIME INTEGER) "); 
} 


//to upgrade the database 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
    onCreate(db); 
} 


public boolean addData(String subject, String time) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(COL_2, subject); 
    values.put(COL_3, time); 
    long result = db.insert(TABLE_NAME, null, values); 
    if (result == -1) { 
     return false; 
    } else { 
     return true; 
    } 
} // The first method I want to use in my MainActivity class 

public Cursor returnData() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null); 
    return cursor; 
} // The secondmethod I want to use in my MainActivity class 

} 
+0

通知IDと時間をミリ秒単位で保存したデータベースに保存するイベントごとに、通知の正確な時刻を設定するために通知とミリ秒を編集またはキャンセルするのに役立ちます。 –

答えて

1

this tutorialチェックしてみてくださいが、それはまた、作られたリマインダーを作成する方法を教えてSQLiteデータベースの使用。

+0

リンクが死んでいるあなたのように見える – anshulkatta

関連する問題