質問編集履歴

6

コードの間違い

2017/07/31 15:41

投稿

atatatatata
atatatatata

スコア77

test CHANGED
File without changes
test CHANGED
@@ -18,33 +18,99 @@
18
18
 
19
19
  ```java
20
20
 
21
- public class CheckGpsActivity extends Activity {
21
+ public class CheckOverlayActivity extends Activity {
22
-
23
- private final int REQUEST_PERMISSION = 10;
24
22
 
25
23
 
26
24
 
27
- @Override
28
-
29
- protected void onCreate(Bundle savedInstanceState) {
25
+ private final int OVERLAY_PERMISSION_REQ_CODE = 20;
30
-
31
- super.onCreate(savedInstanceState);
32
-
33
- setContentView(R.layout.activity_check_gps);
34
-
35
- Log.d("MainActivity", "onCreate()");
36
26
 
37
27
 
38
28
 
39
- if(Build.VERSION.SDK_INT >= 23){
29
+ @Override
40
30
 
31
+ protected void onCreate(Bundle savedInstanceState) {
32
+
33
+ super.onCreate(savedInstanceState);
34
+
35
+ setContentView(R.layout.activity_check_overlay);
36
+
37
+ Log.d("MainActivity", "onCreate()");
38
+
39
+
40
+
41
+ if (Build.VERSION.SDK_INT >= 23) {
42
+
43
+ Toast toast = Toast.makeText(this, "1、checkOverlayPermissin()を呼ぶ", Toast.LENGTH_SHORT);
44
+
45
+ toast.show();
46
+
41
- checkPermission();
47
+ checkOverlayPermission();
48
+
49
+ } else {
50
+
51
+ locationActivity();
52
+
53
+ }
54
+
55
+ }
56
+
57
+
58
+
59
+
60
+
61
+ public void checkOverlayPermission() {
62
+
63
+
64
+
65
+ if (Settings.canDrawOverlays(this)) {
66
+
67
+
68
+
69
+ Toast toast = Toast.makeText(this, "すでに許可されてた", Toast.LENGTH_SHORT);
70
+
71
+ toast.show();
72
+
73
+
74
+
75
+ locationActivity();
76
+
77
+
78
+
79
+ }else{
80
+
81
+ Toast toast = Toast.makeText(this, "2、requestOverlayPermission()を呼ぶ", Toast.LENGTH_SHORT);
82
+
83
+ toast.show();
84
+
85
+ requestOverlayPermission();
42
86
 
43
87
  }
44
88
 
45
- else{
89
+ }
46
90
 
91
+
92
+
93
+
94
+
95
+ private void requestOverlayPermission(){
96
+
97
+ Toast toast = Toast.makeText(this, "3、requestOverlayPermission()呼ばれた", Toast.LENGTH_SHORT);
98
+
47
- locationActivity();
99
+ toast.show();
100
+
101
+ if (Build.VERSION.SDK_INT < 23) {
102
+
103
+ } else {
104
+
105
+ /* android 6 以上 */
106
+
107
+ if (!Settings.canDrawOverlays(this)) {
108
+
109
+ Intent intent2 = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
110
+
111
+ startActivityForResult(intent2, OVERLAY_PERMISSION_REQ_CODE);
112
+
113
+ }
48
114
 
49
115
  }
50
116
 
@@ -54,125 +120,57 @@
54
120
 
55
121
 
56
122
 
57
- public void repetition(){
123
+ // 結果の受け取り
58
124
 
59
- if(Build.VERSION.SDK_INT >= 23){
125
+ @Override
60
126
 
61
- checkPermission();
127
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
62
128
 
63
- }
64
129
 
65
- else{
66
130
 
67
- locationActivity();
131
+ Toast toast = Toast.makeText(this, "4、結果の受け取り", Toast.LENGTH_SHORT);
68
132
 
133
+ toast.show();
134
+
135
+
136
+
137
+
138
+
139
+ if(requestCode==OVERLAY_PERMISSION_REQ_CODE){
140
+
141
+
142
+
143
+ if (Settings.canDrawOverlays(this)) {
144
+
145
+ locationActivity();
146
+
147
+
148
+
149
+ }else{
150
+
151
+ Toast toast1 = Toast.makeText(this, "許可をしないと進めません", Toast.LENGTH_SHORT);
152
+
153
+ toast1.show();
154
+
69
- }
155
+ }
156
+
157
+ }
70
158
 
71
159
  }
72
160
 
73
161
 
74
162
 
75
- // 位置情報許可の確認
76
-
77
- public void checkPermission() {
78
-
79
- // 既に許可している
80
-
81
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED){
82
-
83
- locationActivity();
84
-
85
- }
86
-
87
- // 拒否していた場合
88
-
89
- else{
90
-
91
- requestLocationPermission();
92
-
93
- }
94
-
95
- }
96
163
 
97
164
 
98
-
99
- // 許可を求める
100
-
101
- private void requestLocationPermission() {
102
-
103
- if (ActivityCompat.shouldShowRequestPermissionRationale(this,
104
-
105
- Manifest.permission.ACCESS_FINE_LOCATION)) {
106
-
107
- ActivityCompat.requestPermissions(CheckGpsActivity.this,
108
-
109
- new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION);
110
-
111
-
112
-
113
- } else {
114
-
115
- Toast toast = Toast.makeText(this, "許可してください", Toast.LENGTH_SHORT);
116
-
117
- toast.show();
118
-
119
-
120
-
121
- ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, REQUEST_PERMISSION);
122
-
123
-
124
-
125
- }
126
-
127
- }
128
-
129
-
130
-
131
- // 結果の受け取り
132
-
133
- @Override
134
-
135
- public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
136
-
137
- if (requestCode == REQUEST_PERMISSION) {
138
-
139
- // 使用が許可された
140
-
141
- if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
142
-
143
-
144
-
145
- locationActivity();
146
-
147
- return;
148
-
149
-
150
-
151
- } else {
152
-
153
- // それも拒否された時の対応
165
+ // Intent Location
154
-
155
- Toast toast = Toast.makeText(this, "許可をしてください", Toast.LENGTH_SHORT);
156
-
157
- toast.show();
158
-
159
-
160
-
161
-
162
-
163
- repetition();
164
-
165
- }
166
-
167
- }
168
-
169
- }
170
-
171
-
172
166
 
173
167
  private void locationActivity() {
174
168
 
169
+ Toast toast = Toast.makeText(this, "5、次の画面へ", Toast.LENGTH_SHORT);
170
+
171
+ toast.show();
172
+
175
- Intent intent = new Intent(getApplication(), GpsGetActivity.class);
173
+ Intent intent = new Intent(getApplication(), CheckStorageActivity.class);
176
174
 
177
175
  startActivity(intent);
178
176
 
@@ -180,4 +178,8 @@
180
178
 
181
179
  }
182
180
 
181
+
182
+
183
+
184
+
183
185
  ```

5

説明の追加

2017/07/31 15:41

投稿

atatatatata
atatatatata

スコア77

test CHANGED
File without changes
test CHANGED
@@ -4,9 +4,15 @@
4
4
 
5
5
  backボタンで戻っても、
6
6
 
7
+ permission許可しても、
8
+
9
+ 次の他のpermissionを許可しようとすると
10
+
7
- permission許可しても、overlayの 「画面オーバーレイを検出」というポップが出てきます。
11
+ overlayの 「画面オーバーレイを検出」というポップが出てきます。
8
12
 
9
13
  どうすればいいのでしょうか?
14
+
15
+ たまに、出ないでうまくいきます。
10
16
 
11
17
 
12
18
 

4

コードの変更

2017/07/31 15:32

投稿

atatatatata
atatatatata

スコア77

test CHANGED
File without changes
test CHANGED
@@ -12,11 +12,9 @@
12
12
 
13
13
  ```java
14
14
 
15
- public class CheckOverlayActivity extends Activity {
15
+ public class CheckGpsActivity extends Activity {
16
16
 
17
-
18
-
19
- private final int OVERLAY_PERMISSION_REQ_CODE=20;
17
+ private final int REQUEST_PERMISSION = 10;
20
18
 
21
19
 
22
20
 
@@ -26,7 +24,7 @@
26
24
 
27
25
  super.onCreate(savedInstanceState);
28
26
 
29
- setContentView(R.layout.activity_check_overlay);
27
+ setContentView(R.layout.activity_check_gps);
30
28
 
31
29
  Log.d("MainActivity", "onCreate()");
32
30
 
@@ -34,11 +32,7 @@
34
32
 
35
33
  if(Build.VERSION.SDK_INT >= 23){
36
34
 
37
- Toast toast = Toast.makeText(this, "1、checkOverlayPermissin()を呼ぶ", Toast.LENGTH_SHORT);
38
-
39
- toast.show();
40
-
41
- checkOverlayPermission();
35
+ checkPermission();
42
36
 
43
37
  }
44
38
 
@@ -52,29 +46,19 @@
52
46
 
53
47
 
54
48
 
55
- public void checkOverlayPermission() {
56
-
57
- int permissionCheck = ContextCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
58
49
 
59
50
 
51
+ public void repetition(){
60
52
 
61
- if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
53
+ if(Build.VERSION.SDK_INT >= 23){
62
54
 
63
- Toast toast = Toast.makeText(this, "すでに許可されてた", Toast.LENGTH_SHORT);
55
+ checkPermission();
64
56
 
65
- toast.show();
57
+ }
66
58
 
67
-
59
+ else{
68
60
 
69
61
  locationActivity();
70
-
71
- }else{
72
-
73
- Toast toast = Toast.makeText(this, "2、requestOverlayPermission()を呼ぶ", Toast.LENGTH_SHORT);
74
-
75
- toast.show();
76
-
77
- requestOverlayPermission();
78
62
 
79
63
  }
80
64
 
@@ -82,25 +66,95 @@
82
66
 
83
67
 
84
68
 
69
+ // 位置情報許可の確認
70
+
71
+ public void checkPermission() {
72
+
73
+ // 既に許可している
74
+
75
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED){
76
+
77
+ locationActivity();
78
+
79
+ }
80
+
81
+ // 拒否していた場合
82
+
83
+ else{
84
+
85
+ requestLocationPermission();
86
+
87
+ }
88
+
89
+ }
85
90
 
86
91
 
87
- private void requestOverlayPermission(){
88
92
 
89
- Toast toast = Toast.makeText(this, "3、requestOverlayPermission()呼ばれた", Toast.LENGTH_SHORT);
93
+ // 許可を求める
90
94
 
91
- toast.show();
95
+ private void requestLocationPermission() {
92
96
 
97
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this,
98
+
93
- if (Build.VERSION.SDK_INT < 23) {
99
+ Manifest.permission.ACCESS_FINE_LOCATION)) {
100
+
101
+ ActivityCompat.requestPermissions(CheckGpsActivity.this,
102
+
103
+ new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION);
104
+
105
+
94
106
 
95
107
  } else {
96
108
 
97
- /* android 6 以上 */
109
+ Toast toast = Toast.makeText(this, "許可してください", Toast.LENGTH_SHORT);
98
110
 
99
- if (!Settings.canDrawOverlays(this)) {
111
+ toast.show();
100
112
 
101
- Intent intent2 = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
102
113
 
114
+
115
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, REQUEST_PERMISSION);
116
+
117
+
118
+
119
+ }
120
+
121
+ }
122
+
123
+
124
+
125
+ // 結果の受け取り
126
+
127
+ @Override
128
+
129
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
130
+
131
+ if (requestCode == REQUEST_PERMISSION) {
132
+
133
+ // 使用が許可された
134
+
103
- startActivityForResult(intent2, OVERLAY_PERMISSION_REQ_CODE);
135
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
136
+
137
+
138
+
139
+ locationActivity();
140
+
141
+ return;
142
+
143
+
144
+
145
+ } else {
146
+
147
+ // それでも拒否された時の対応
148
+
149
+ Toast toast = Toast.makeText(this, "許可をしてください", Toast.LENGTH_SHORT);
150
+
151
+ toast.show();
152
+
153
+
154
+
155
+
156
+
157
+ repetition();
104
158
 
105
159
  }
106
160
 
@@ -110,81 +164,9 @@
110
164
 
111
165
 
112
166
 
113
-
114
-
115
- // 結果の受け取り
116
-
117
- @Override
118
-
119
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
120
-
121
-
122
-
123
- Toast toast = Toast.makeText(this, "4、結果の受け取り", Toast.LENGTH_SHORT);
124
-
125
- toast.show();
126
-
127
-
128
-
129
-
130
-
131
- //これは、使えない
132
-
133
- // public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
134
-
135
- //if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
136
-
137
- //if (ActivityCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION) == PackageManager.PERMISSION_GRANTED) {
138
-
139
-
140
-
141
-
142
-
143
- if(requestCode==OVERLAY_PERMISSION_REQ_CODE){
144
-
145
-
146
-
147
- // if (ActivityCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION) == PackageManager.PERMISSION_GRANTED) {
148
-
149
- // locationActivity();
150
-
151
-
152
-
153
- int permissionCheck = ContextCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
154
-
155
-
156
-
157
- if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
158
-
159
- locationActivity();
160
-
161
-
162
-
163
- }else{
164
-
165
- Toast toast1 = Toast.makeText(this, "許可をしないと進めません", Toast.LENGTH_SHORT);
166
-
167
- toast1.show();
168
-
169
- }
170
-
171
- }
172
-
173
- }
174
-
175
-
176
-
177
-
178
-
179
- // Intent でLocation
180
-
181
167
  private void locationActivity() {
182
168
 
183
- Toast toast = Toast.makeText(this, "5、次の画面へ", Toast.LENGTH_SHORT);
184
-
185
- toast.show();
186
-
187
- Intent intent = new Intent(getApplication(), CheckStorageActivity.class);
169
+ Intent intent = new Intent(getApplication(), GpsGetActivity.class);
188
170
 
189
171
  startActivity(intent);
190
172
 

3

変更

2017/07/31 15:32

投稿

atatatatata
atatatatata

スコア77

test CHANGED
File without changes
test CHANGED
@@ -58,13 +58,13 @@
58
58
 
59
59
 
60
60
 
61
- if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
61
+ if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
62
62
 
63
63
  Toast toast = Toast.makeText(this, "すでに許可されてた", Toast.LENGTH_SHORT);
64
64
 
65
65
  toast.show();
66
66
 
67
- //コピペ多分間違い
67
+
68
68
 
69
69
  locationActivity();
70
70
 
@@ -154,7 +154,7 @@
154
154
 
155
155
 
156
156
 
157
- if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
157
+ if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
158
158
 
159
159
  locationActivity();
160
160
 
@@ -192,6 +192,4 @@
192
192
 
193
193
  }
194
194
 
195
-
196
-
197
195
  ```

2

誤字

2017/07/31 10:28

投稿

atatatatata
atatatatata

スコア77

test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,9 @@
2
2
 
3
3
  他のアプリの上に重ねて描画することを許可 するボタンをonにして、
4
4
 
5
- backボタンで戻っても、呼び出されたonActivityResultで、
5
+ backボタンで戻っても、
6
6
 
7
- if (ActivityCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION) == PackageManager.PERMISSION_GRANTED) {
7
+ permission許可しても、overlayの 「画面オーバーレイを検出」というポップが出てきます。
8
-
9
-
10
-
11
- の中にはいれません。
12
8
 
13
9
  どうすればいいのでしょうか?
14
10
 

1

コードの修正

2017/07/31 09:44

投稿

atatatatata
atatatatata

スコア77

test CHANGED
@@ -1 +1 @@
1
- permission許可しても、ifで、中にはせんどうすればいいのでしょうか?
1
+ permission許可しても、overlayの 「画面オーバーレイを検出」とうポップが出てき
test CHANGED
@@ -58,9 +58,11 @@
58
58
 
59
59
  public void checkOverlayPermission() {
60
60
 
61
- if (ActivityCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION) == PackageManager.PERMISSION_GRANTED) {
61
+ int permissionCheck = ContextCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
62
+
63
+
64
+
62
-
65
+ if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
63
-
64
66
 
65
67
  Toast toast = Toast.makeText(this, "すでに許可されてた", Toast.LENGTH_SHORT);
66
68
 
@@ -146,11 +148,23 @@
146
148
 
147
149
 
148
150
 
149
- if (ActivityCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION) == PackageManager.PERMISSION_GRANTED) {
151
+ // if (ActivityCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION) == PackageManager.PERMISSION_GRANTED) {
152
+
150
-
153
+ // locationActivity();
154
+
155
+
156
+
157
+ int permissionCheck = ContextCompat.checkSelfPermission(this, Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
158
+
159
+
160
+
161
+ if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
162
+
151
- locationActivity();
163
+ locationActivity();
152
-
164
+
165
+
166
+
153
- }else{
167
+ }else{
154
168
 
155
169
  Toast toast1 = Toast.makeText(this, "許可をしないと進めません", Toast.LENGTH_SHORT);
156
170