質問編集履歴

2

最終版のコード

2017/09/10 15:44

投稿

bbjjki4
bbjjki4

スコア7

test CHANGED
File without changes
test CHANGED
@@ -108,6 +108,14 @@
108
108
 
109
109
 
110
110
 
111
+ if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
112
+
113
+
114
+
115
+ requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
116
+
117
+
118
+
111
119
 
112
120
 
113
121
  TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

1

2017/09/10 15:44

投稿

bbjjki4
bbjjki4

スコア7

test CHANGED
@@ -1 +1 @@
1
- Android Studioの電話着信につ
1
+ MainActivityで着信応答をさせた
test CHANGED
@@ -2,25 +2,245 @@
2
2
 
3
3
  プログラミング初心者です。お力添えお願いします。
4
4
 
5
- MainActivityを起動中に着信があった場合、その電話番号をToastにて表示したいのですが、onCallStateChangedメソッドのincomingNumberに何も入っていない状態です
5
+ MainActivityを起動中に着信があった場合、その電話番号をToastにて表示しようとしました。
6
+
7
+
8
+
6
-
9
+ ```ここに言語を入力
10
+
7
- やはりServiceやReceiverを使わないと電話番号の取得はできないのでしょうか?
11
+ @Override
8
-
9
-
10
-
11
-
12
-
12
+
13
- public void onCallStateChanged(int state, String incomingNumber) {
13
+ public void onCallStateChanged(int state, String incomingNumber) {
14
14
 
15
15
  switch (state) {
16
16
 
17
17
  case TelephonyManager.CALL_STATE_IDLE:
18
18
 
19
+ Log.e("Number",incomingNumber);
20
+
19
21
  Toast.makeText(MainActivity.this, "CALL_STATE_IDLE", Toast.LENGTH_SHORT).show();
20
22
 
23
+ break;
24
+
25
+ ************************************該当部******************************************************
26
+
27
+ case TelephonyManager.CALL_STATE_RINGING:
28
+
29
+ Log.e("Number", incomingNumber);
30
+
31
+ SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
32
+
33
+ SharedPreferences.Editor editor = preference.edit();
34
+
35
+ editor.putString("Number", incomingNumber);
36
+
37
+
38
+
39
+ NumberEdit.setText(preference.getString("Number", "Phone number"));
40
+
41
+ Toast.makeText(MainActivity.this, incomingNumber, Toast.LENGTH_SHORT).show();
42
+
43
+ *********************************該当部***********************************************************
44
+
45
+ ```
46
+
47
+
48
+
49
+ ですがCALL_STATE_RINGINGの際に、
50
+
51
+ ```ここに言語を入力
52
+
53
+ Toast.makeText(MainActivity.this, incomingNumber, Toast.LENGTH_SHORT).show();
54
+
55
+ および
56
+
57
+ Log.e("Number", incomingNumber);
58
+
59
+ ```
60
+
61
+ を行い、incomingNumberを確認しようとしたのですが、どうやらincomingNumberには何も入力されていない状態でした。
62
+
63
+ Toast自体は実行できているのですが、Log.eは実行すらされていないようです。
64
+
65
+ やはりServiceやReceiverを使わないと着信番号のキャッチは無理なのでしょうか?
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+ 以下、全体のコード
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ <<MainActivity>>
84
+
85
+
86
+
87
+ ```ここに言語を入力
88
+
89
+ public class MainActivity extends AppCompatActivity {
90
+
91
+ EditText SecondEdit, NumberEdit;
92
+
93
+ TextView SecondTextView, NumberTextView;
94
+
95
+ Button SecondButton, NumberButton;
96
+
97
+
98
+
99
+
100
+
101
+ @Override
102
+
103
+ protected void onCreate(Bundle savedInstanceState) {
104
+
105
+ super.onCreate(savedInstanceState);
106
+
107
+ setContentView(R.layout.activity_main);
108
+
109
+
110
+
111
+
112
+
113
+ TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
114
+
115
+ PhoneStateListener phoneStateListener = new MyPhoneStateListener();
116
+
117
+ telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
118
+
119
+
120
+
121
+ final SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
122
+
123
+
124
+
125
+ NumberTextView = (TextView) findViewById(R.id.NumberTextView);
126
+
127
+ SecondTextView = (TextView) findViewById(R.id.SecondTextView);
128
+
129
+ SecondEdit = (EditText) findViewById(R.id.SecondEdit);
130
+
131
+ NumberEdit = (EditText) findViewById(R.id.NumberEdit);
132
+
133
+
134
+
135
+
136
+
137
+ NumberButton = (Button) findViewById(R.id.NumberButton);
138
+
139
+ NumberButton.setOnClickListener(new View.OnClickListener() {
140
+
141
+ @Override
142
+
143
+ public void onClick(View v) {
144
+
145
+ SharedPreferences.Editor editor = preference.edit();
146
+
147
+ editor.putString("Number", NumberEdit.getText().toString());
148
+
149
+ editor.commit();
150
+
151
+ NumberTextView.setText(preference.getString("Number", "Phone number"));
152
+
153
+
154
+
155
+
156
+
157
+ }
158
+
159
+ });
160
+
161
+
162
+
163
+ SecondButton = (Button) findViewById(R.id.SecondButton);
164
+
165
+ SecondButton.setOnClickListener(new View.OnClickListener() {
166
+
167
+ @Override
168
+
169
+ public void onClick(View v) {
170
+
171
+ SharedPreferences.Editor editor = preference.edit();
172
+
173
+ editor.putString("Second", SecondEdit.getText().toString());
174
+
175
+ editor.commit();
176
+
177
+ SecondTextView.setText(preference.getString("Second", "180"));
178
+
179
+ }
180
+
181
+ });
182
+
183
+
184
+
185
+
186
+
187
+ }
188
+
189
+
190
+
191
+ @Override
192
+
193
+ protected void onResume() {
194
+
195
+ super.onResume();
196
+
197
+ SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
198
+
199
+ SecondTextView.setText(preference.getString("Second", "180"));
200
+
201
+ NumberTextView.setText(preference.getString("Number", "Phone number"));
202
+
203
+
204
+
205
+
206
+
207
+ }
208
+
209
+
210
+
211
+ @Override
212
+
213
+ protected void onPause() {
214
+
215
+ super.onPause();
216
+
217
+
218
+
219
+
220
+
221
+ }
222
+
223
+
224
+
225
+ private class MyPhoneStateListener extends PhoneStateListener {
226
+
227
+ @Override
228
+
229
+ public void onCallStateChanged(int state, String incomingNumber) {
230
+
231
+ switch (state) {
232
+
233
+ case TelephonyManager.CALL_STATE_IDLE:
234
+
235
+ Log.e("Number",incomingNumber);
236
+
237
+ Toast.makeText(MainActivity.this, "CALL_STATE_IDLE", Toast.LENGTH_SHORT).show();
238
+
21
239
  break;
22
240
 
23
- __ ### **case TelephonyManager.CALL_STATE_RINGING:
241
+ case TelephonyManager.CALL_STATE_RINGING:
242
+
243
+ Log.e("Number", incomingNumber);###問題の部分###
24
244
 
25
245
  SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
26
246
 
@@ -28,15 +248,13 @@
28
248
 
29
249
  editor.putString("Number", incomingNumber);
30
250
 
31
- Log.e("Number",incomingNumber);
32
-
33
251
 
34
252
 
35
253
  NumberEdit.setText(preference.getString("Number", "Phone number"));
36
254
 
37
255
  Toast.makeText(MainActivity.this, incomingNumber, Toast.LENGTH_SHORT).show();
38
256
 
39
- **__
257
+
40
258
 
41
259
 
42
260
 
@@ -44,6 +262,8 @@
44
262
 
45
263
  case TelephonyManager.CALL_STATE_OFFHOOK:
46
264
 
265
+ Log.e("Number", incomingNumber);
266
+
47
267
  Toast.makeText(MainActivity.this, "CALL_STATE_OFFHOOK", Toast.LENGTH_SHORT).show();
48
268
 
49
269
  break;
@@ -54,243 +274,17 @@
54
274
 
55
275
  }
56
276
 
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
- ###該当のソースコード
66
-
67
- <MainActivity内>
68
-
69
- package com.silentbreakerfortest;
70
-
71
-
72
-
73
- import android.content.Context;
74
-
75
- import android.content.SharedPreferences;
76
-
77
- import android.support.v7.app.AppCompatActivity;
78
-
79
- import android.os.Bundle;
80
-
81
- import android.telephony.PhoneStateListener;
82
-
83
- import android.telephony.TelephonyManager;
84
-
85
- import android.util.Log;
86
-
87
- import android.view.View;
88
-
89
- import android.widget.Button;
90
-
91
- import android.widget.EditText;
92
-
93
- import android.widget.TextView;
94
-
95
- import android.widget.Toast;
96
-
97
-
98
-
99
-
100
-
101
- public class MainActivity extends AppCompatActivity {
102
-
103
- EditText SecondEdit, NumberEdit;
104
-
105
- TextView SecondTextView, NumberTextView;
106
-
107
- Button SecondButton, NumberButton;
108
-
109
-
110
-
111
-
112
-
113
- @Override
114
-
115
- protected void onCreate(Bundle savedInstanceState) {
116
-
117
- super.onCreate(savedInstanceState);
118
-
119
- setContentView(R.layout.activity_main);
120
-
121
-
122
-
123
-
124
-
125
- ** TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
126
-
127
- PhoneStateListener phoneStateListener = new MyPhoneStateListener();
128
-
129
- telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);**
130
-
131
-
132
-
133
- final SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
134
-
135
-
136
-
137
- NumberTextView = (TextView) findViewById(R.id.NumberTextView);
138
-
139
- SecondTextView = (TextView) findViewById(R.id.SecondTextView);
140
-
141
- SecondEdit = (EditText) findViewById(R.id.SecondEdit);
142
-
143
- NumberEdit = (EditText) findViewById(R.id.NumberEdit);
144
-
145
-
146
-
147
-
148
-
149
- NumberButton = (Button) findViewById(R.id.NumberButton);
150
-
151
- NumberButton.setOnClickListener(new View.OnClickListener() {
152
-
153
- @Override
154
-
155
- public void onClick(View v) {
156
-
157
- SharedPreferences.Editor editor = preference.edit();
158
-
159
- editor.putString("Number", NumberEdit.getText().toString());
160
-
161
- editor.commit();
162
-
163
- NumberTextView.setText(preference.getString("Number", "Phone number"));
164
-
165
-
166
-
167
-
168
-
169
- }
170
-
171
- });
172
-
173
-
174
-
175
- SecondButton = (Button) findViewById(R.id.SecondButton);
176
-
177
- SecondButton.setOnClickListener(new View.OnClickListener() {
178
-
179
- @Override
180
-
181
- public void onClick(View v) {
182
-
183
- SharedPreferences.Editor editor = preference.edit();
184
-
185
- editor.putString("Second", SecondEdit.getText().toString());
186
-
187
- editor.commit();
188
-
189
- SecondTextView.setText(preference.getString("Second", "180"));
190
-
191
- }
192
-
193
- });
194
-
195
-
196
-
197
-
198
-
199
- }
200
-
201
-
202
-
203
- @Override
204
-
205
- protected void onResume() {
206
-
207
- super.onResume();
208
-
209
- SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
210
-
211
- SecondTextView.setText(preference.getString("Second", "180"));
212
-
213
- NumberTextView.setText(preference.getString("Number", "Phone number"));
214
-
215
-
216
-
217
-
218
-
219
- }
220
-
221
-
222
-
223
- @Override
224
-
225
- protected void onPause() {
226
-
227
- super.onPause();
228
-
229
-
230
-
231
-
232
-
233
- }
234
-
235
-
236
-
237
- private class MyPhoneStateListener extends PhoneStateListener {
238
-
239
- @Override
240
-
241
- public void onCallStateChanged(int state, String incomingNumber) {
242
-
243
- switch (state) {
244
-
245
- case TelephonyManager.CALL_STATE_IDLE:
246
-
247
- Toast.makeText(MainActivity.this, "CALL_STATE_IDLE", Toast.LENGTH_SHORT).show();
248
-
249
- break;
250
-
251
- __ ### **case TelephonyManager.CALL_STATE_RINGING:
252
-
253
- SharedPreferences preference = getSharedPreferences("data", Context.MODE_PRIVATE);
254
-
255
- SharedPreferences.Editor editor = preference.edit();
256
-
257
- editor.putString("Number", incomingNumber);
258
-
259
- Log.e("Number",incomingNumber);
260
-
261
-
262
-
263
- NumberEdit.setText(preference.getString("Number", "Phone number"));
264
-
265
- Toast.makeText(MainActivity.this, incomingNumber, Toast.LENGTH_SHORT).show();
266
-
267
- **__
268
-
269
-
270
-
271
- break;
272
-
273
- case TelephonyManager.CALL_STATE_OFFHOOK:
274
-
275
- Toast.makeText(MainActivity.this, "CALL_STATE_OFFHOOK", Toast.LENGTH_SHORT).show();
276
-
277
- break;
278
-
279
- }
280
-
281
- }
282
-
283
- }
284
-
285
277
  }
286
278
 
287
279
 
288
280
 
289
281
  ```
290
282
 
291
- <<AndroidManifest>>
283
+ <<AndroidManifest>>
284
+
292
-
285
+ ```ここに言語を入力
286
+
293
-
287
+ <?xml version="1.0" encoding="utf-8"?>
294
288
 
295
289
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
296
290
 
@@ -322,7 +316,7 @@
322
316
 
323
317
  <action android:name="android.intent.action.MAIN" />
324
318
 
325
-
319
+ <action android:name="android.intent.action.PHONE_STATE" />
326
320
 
327
321
  <category android:name="android.intent.category.LAUNCHER" />
328
322
 
@@ -335,3 +329,5 @@
335
329
 
336
330
 
337
331
  </manifest>
332
+
333
+ ```