ユーザーがアイコンを「クリック」すると、sqlite データベースを更新する appwidgetprovider があります。これは onRecieve メソッドによってトリガーされ、正常に機能しましたが、最初にアクティビティによってレコードが作成された場合にのみ機能するようです。
データベースは独自のDBadapter
クラスによって処理され、アクティビティと appwidgetprovider の両方がこのクラスを同じ方法で使用します。
mydb = new DBadapter(this);
mydb = mydb.open();
DBadapter が onCreate メソッドでデータベースを作成するため、アクティビティが a) データベースを作成し、b) 最初のレコードを作成できるのに、appwidgetprovider が作成できない理由を理解できません。
アクティビティが appwidgetprovider に対して行うその他の唯一の使用法は、データベース カーソルを使用してデータベース内を移動することです。
アクティビティによってデータベースがまだ作成されていない場合、データベースを実際に作成できない appwidgetprovider に制限はありますか? もしそうなら、これはアプリがインストールされた後に最初に起動されなければならないことを意味し、次にダミーのレコードが作成/削除されなければならないことを意味します。データベースに書き込みます。
onReceive がプライベート メソッドを呼び出して、データベースにレコードを追加するという反復的なタスクを実行することを忘れていました。これは最初からそうであり、レコードが既に存在する場合は機能しますが、存在しない場合はレコードを作成しません