teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

readContentActivityを修正したコードを追記しました。

2020/03/05 10:11

投稿

jafirm
jafirm

スコア6

title CHANGED
File without changes
body CHANGED
@@ -239,4 +239,30 @@
239
239
 
240
240
 
241
241
  </androidx.constraintlayout.widget.ConstraintLayout>
242
+ ```
243
+
244
+ 以下が完成したうまくいったコードで上記のreadContentActivityを修正しました。
245
+ ```
246
+
247
+ public void readContentActivity() {
248
+
249
+ Calendar beginTime = Calendar.getInstance();
250
+ beginTime.set(2020, 2, 21, 7, 30);
251
+ Calendar endTime = Calendar.getInstance();
252
+ endTime.set(2020, 2, 21, 8, 30);
253
+ ContentResolver cr = getContentResolver();
254
+ ContentValues values = new ContentValues();
255
+ values.put(Events.CALENDAR_ID, 5);
256
+ values.put(Events.TITLE, "タイトル");
257
+ values.put(Events.DESCRIPTION, "説明");
258
+ values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
259
+ values.put(Events.DTSTART, beginTime.getTimeInMillis());
260
+ values.put(Events.DTEND, endTime.getTimeInMillis());
261
+
262
+
263
+ if (checkSelfPermission(Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
264
+ checkPermission();
265
+ }
266
+ cr.insert(Events.CONTENT_URI, values);
267
+ }
242
268
  ```

3

全体のコードを載せました。

2020/03/05 10:11

投稿

jafirm
jafirm

スコア6

title CHANGED
File without changes
body CHANGED
@@ -93,4 +93,150 @@
93
93
  cr.insert(Events.CONTENT_URI, values);
94
94
  }
95
95
  }
96
+ ```
97
+
98
+ 以下から全文になります。
99
+ 下記がMainActivity.javaです
100
+ ```
101
+ package com.example.tera;
102
+
103
+ import androidx.annotation.NonNull;
104
+ import androidx.appcompat.app.AppCompatActivity;
105
+
106
+ import android.Manifest;
107
+ import android.content.ContentResolver;
108
+ import android.content.ContentValues;
109
+ import android.content.Intent;
110
+ import android.content.pm.PackageManager;
111
+ import android.net.Uri;
112
+ import android.os.Build;
113
+ import android.os.Bundle;
114
+ import android.provider.CalendarContract;
115
+ import android.widget.Toast;
116
+
117
+ import java.util.Calendar;
118
+ import java.util.TimeZone;
119
+
120
+ import android.provider.CalendarContract.Events;
121
+
122
+ public class MainActivity extends AppCompatActivity {
123
+
124
+
125
+ private final int REQUEST_PERMISSION = 10;
126
+
127
+
128
+ @Override
129
+ protected void onCreate(Bundle savedInstanceState) {
130
+ super.onCreate(savedInstanceState);
131
+ readContentActivity();
132
+ }
133
+
134
+ // Permissionの確認
135
+ public void checkPermission() {
136
+ // 既に許可している
137
+ if (checkSelfPermission(Manifest.permission.WRITE_CALENDAR) !=
138
+ PackageManager.PERMISSION_GRANTED) {
139
+ requestLocationPermission();
140
+ }
141
+ }
142
+
143
+ // 許可を求める
144
+ private void requestLocationPermission() {
145
+ if (shouldShowRequestPermissionRationale(
146
+ Manifest.permission.WRITE_CALENDAR)) {
147
+ requestPermissions(new String[]{Manifest.permission.WRITE_CALENDAR},
148
+ REQUEST_PERMISSION);
149
+
150
+ } else {
151
+ Toast toast = Toast.makeText(this,
152
+ "許可されないとアプリが実行できません", Toast.LENGTH_SHORT);
153
+ toast.show();
154
+
155
+ requestPermissions(new String[]{Manifest.permission.WRITE_CALENDAR,},
156
+ REQUEST_PERMISSION);
157
+
158
+ }
159
+ }
160
+
161
+ // 結果の受け取り
162
+ @Override
163
+ public void onRequestPermissionsResult(
164
+ int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
165
+ if (requestCode == REQUEST_PERMISSION) {
166
+ // 使用が許可された
167
+ if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
168
+ // それでも拒否された時の対応
169
+ Toast toast = Toast.makeText(this,
170
+ "これ以上なにもできません", Toast.LENGTH_SHORT);
171
+ toast.show();
172
+ }
173
+ }
174
+ }
175
+
176
+ public void readContentActivity() {
177
+
178
+ Calendar beginTime = Calendar.getInstance();
179
+ beginTime.set(2020, 2, 21, 7, 30);
180
+ Calendar endTime = Calendar.getInstance();
181
+ endTime.set(2020, 2, 21, 8, 30);
182
+ ContentResolver cr = getContentResolver();
183
+ ContentValues values = new ContentValues();
184
+ values.put(Events.CALENDAR_ID, 1);
185
+ values.put(Events.TITLE, "タイトル");
186
+ values.put(Events.DESCRIPTION, "説明");
187
+ values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
188
+ values.put(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
189
+ values.put(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
190
+
191
+
192
+ if (checkSelfPermission(Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
193
+ checkPermission();
194
+ }
195
+ cr.insert(Events.CONTENT_URI, values);
196
+ }
197
+ }
198
+
199
+ ```
200
+
201
+ 下記がAndroidManifest.xmlです
202
+ ```
203
+ <?xml version="1.0" encoding="utf-8"?>
204
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
205
+ package="com.example.tera">
206
+
207
+
208
+ <uses-permission android:name="android.permission.READ_CALENDAR" />
209
+ <uses-permission android:name="android.permission.WRITE_CALENDAR" />
210
+
211
+ <application
212
+ android:allowBackup="true"
213
+ android:icon="@mipmap/ic_launcher"
214
+ android:label="@string/app_name"
215
+ android:roundIcon="@mipmap/ic_launcher_round"
216
+ android:supportsRtl="true"
217
+ android:theme="@style/AppTheme">
218
+ <activity android:name=".MainActivity">
219
+ <intent-filter>
220
+ <action android:name="android.intent.action.MAIN" />
221
+
222
+ <category android:name="android.intent.category.LAUNCHER" />
223
+ </intent-filter>
224
+ </activity>
225
+ </application>
226
+
227
+ </manifest>
228
+ ```
229
+
230
+ 下記がactivity_main.xmlです(一応のせときます)
231
+ ```
232
+ <?xml version="1.0" encoding="utf-8"?>
233
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
234
+ xmlns:app="http://schemas.android.com/apk/res-auto"
235
+ xmlns:tools="http://schemas.android.com/tools"
236
+ android:layout_width="match_parent"
237
+ android:layout_height="match_parent"
238
+ tools:context=".MainActivity">
239
+
240
+
241
+ </androidx.constraintlayout.widget.ConstraintLayout>
96
242
  ```

2

```で囲みました。2つ目のコードの修正すべき点を教えてください。

2020/03/02 12:11

投稿

jafirm
jafirm

スコア6

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
  アドバイスお願いします。
8
8
 
9
9
  下記はパーミッションの確認のためのコードです。
10
- '''
10
+ ```
11
11
  public class MainActivity extends AppCompatActivity {
12
12
 
13
13
 
@@ -61,7 +61,7 @@
61
61
  }
62
62
  }
63
63
  }
64
- '''
64
+ ```
65
65
 
66
66
  下記がパーミッションの確認のコードの呼び出し、
67
67
  そしてカレンダーを保存するためのコードで、
@@ -70,7 +70,7 @@
70
70
  なので下のコードを修正すべき箇所を
71
71
  指摘してもらいたいです。
72
72
 
73
- '''
73
+ ```
74
74
  public void readContentActivity() {
75
75
 
76
76
  Calendar beginTime = Calendar.getInstance();
@@ -93,4 +93,4 @@
93
93
  cr.insert(Events.CONTENT_URI, values);
94
94
  }
95
95
  }
96
- '''
96
+ ```

1

コードを’’’で囲みました。2つ目のコードの仕方が正しいかどうか教えてください。

2020/03/02 10:41

投稿

jafirm
jafirm

スコア6

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,8 @@
6
6
  2月21日7時30分に「タイトル」が保存されません。
7
7
  アドバイスお願いします。
8
8
 
9
+ 下記はパーミッションの確認のためのコードです。
10
+ '''
9
11
  public class MainActivity extends AppCompatActivity {
10
12
 
11
13
 
@@ -59,7 +61,16 @@
59
61
  }
60
62
  }
61
63
  }
64
+ '''
62
65
 
66
+ 下記がパーミッションの確認のコードの呼び出し、
67
+ そしてカレンダーを保存するためのコードで、
68
+ 下のコードを実行して、カレンダーアプリで
69
+ 確認するのですが、保存されていません。
70
+ なので下のコードを修正すべき箇所を
71
+ 指摘してもらいたいです。
72
+
73
+ '''
63
74
  public void readContentActivity() {
64
75
 
65
76
  Calendar beginTime = Calendar.getInstance();
@@ -81,6 +92,5 @@
81
92
  }
82
93
  cr.insert(Events.CONTENT_URI, values);
83
94
  }
84
-
85
-
86
- }
95
+ }
96
+ '''