質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

2回答

1947閲覧

[Androidアプリ開発]指定した時間にWebApiをたたいて、情報(JSON)を取得したい

be__prog

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/05/20 15:19

指定した時間にWebApiをたたいて、情報(JSON)を取得したい

お世話になります。
AndroidStudioではじめてのアンドロイドアプリ開発を行っています。
掲題の件でお力添えいただきたいです。

ボタンを押された際にアラームをセットして、指定時間(ここでは10時00分00秒)に端末に通知を送るという処理はかけました。
現在やりたいことはAlarmReceiver2クラスのonReceiveメソッドでWebApiをたたき、その結果を判定して、通知する・しないを分けることです。
イメージは下記になります。

Java

1 public void onReceive(Context context, Intent intent) { 2 3 //ここでWebApiをたたいて情報を取得したい 4 result = getMovieTitle(); 5 6 if(result == "Your Name."){ 7 //通知処理 8 Notification( context, intent); 9 } 10 }

このサイトを参考にして、あるボタンを押した際のJSONの取得および画面への表示はできましたが、

AppCompatActivityを継承していないクラスでWebApiをたたく方法がわかりません。

アプリが起動中でない時に掲題の処理を行うことを想定しており、「Android WebApi」などで検索しましたが、なかなかほしい情報が得られませんでした。

学習を主の目的としているため、「考え方」や「検索ワード」などを教えていただけるだけでも大変ありがたいです。
初学者につき、とんちんかんな質問をしているかもしれませんが、なにとぞよろしくお願いいたします。

該当のソースコード

Kotlin

1 // 実行する時間 2 var calendar : Calendar = Calendar.getInstance() 3 calendar.set(Calendar.HOUR,10) 4 calendar.set(Calendar.MINUTE,0) 5 calendar.set(Calendar.SECOND,0) 6 // 実行したいクラスから Intent を作成 7 val alarmIntent = Intent(this, AlarmReceiver2::class.java) 8 val pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT) 9 10 // AlarmManager で pendingIntent を指定時間後に実行するように設定 11 val manager = getSystemService(Context.ALARM_SERVICE) as AlarmManager 12 manager.setExact(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent); 13

Java

1public class AlarmReceiver2 extends BroadcastReceiver { 2 @Override 3 public void onReceive(Context context, Intent intent) { 4 //通知処理 5 Notification( context, intent); 6 } 7 8 public void Notification(Context context, Intent intent){ 9 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 10 String channelId = "updates"; // 通知チャンネルのIDにする任意の文字列 11 String name = "更新情報"; // 通知チャンネル名 12 int importance = NotificationManager.IMPORTANCE_HIGH; // デフォルトの重要度 13 NotificationChannel channel = new NotificationChannel(channelId, name, importance); 14 channel.setDescription("通知チャンネルの説明"); // 必須ではない 15 16 // 通知チャンネルの設定のデフォルト値。設定必須ではなく、ユーザーが変更可能。 17 channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); 18 channel.enableVibration(true); 19 channel.enableLights(true); 20 channel.setShowBadge(false); // ランチャー上でアイコンバッジを表示するかどうか 21 22 // NotificationManagerCompatにcreateNotificationChannel()は無い。 23 NotificationManager nm = getSystemService(context , NotificationManager.class); 24 nm.createNotificationChannel(channel); 25 26 // 通知チャンネルのIDを指定するコンストラクタが増えている 27 NotificationCompat.Builder builder 28 = new NotificationCompat.Builder(context, channelId) 29 .setContentTitle("TEST_Title") 30 .setContentText("TEST_Text") 31 .setSmallIcon(R.drawable.sample); 32 NotificationManagerCompat.from(context).notify(1, builder.build()); 33 } 34 } 35}

JSON

1{ 2 "movies": [ 3 { 4 "title": "Your Name.", 5 "year": 2016 6 } 7 ] 8}

補足情報(FW/ツールのバージョンなど)

AndroidStudio3.4
Java
Kotlin

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

どこまではうまくいっていてどこからはおかしくなっているのかを切り分けた方が良いと思います。
そもそも onReceive は呼ばれているんでしょうか。
通信処理がうまくいっていないことはログか何かで確認されたんでしょうか。

投稿2019/05/21 16:55

upnp2240

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参考にされたという Qiita の記事ですが, WebAPI に AppCompatActivity は関係ないのではないでしょうか.
AppCompatActivity は, アクセスのトリガーとなるボタンと, アクセス出来たことを確認する為のテキストビューを提供するだけで,
後は HitAPITask が結果のテキストビューへの設定まで行っています.
ですのでこの HitAPITask を(テキストビュー関係など)少し修正すれば, 使えるのではないでしょうか

投稿2019/05/20 15:52

jimbe

総合スコア12648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問