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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Kotlin

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

Q&A

解決済

1回答

935閲覧

AppCompatActivityを継承していないクラスからIntentを用いてアクティビティを起動したい

aomorimiyagi

総合スコア10

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Kotlin

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

0グッド

0クリップ

投稿2022/08/04 06:26

前提

Android初心者です。
Android(Kotlin)で、Okhttp3を用いてWebSocketの接続を行うアプリケーションにおいて、バックグラウンド時にサーバーから特定のメッセージが送られてきた場合に、アクティビティを開くアプリケーションを実装したいです。

実現したいこと

  • サーバーから特定のメッセージを受信した場合に、Activityを起動する

発生している問題・エラーメッセージ

WebSocketListenerを継承するクラスにおいて、オーバーライドしたonMessage上からActivityを起動したいと考えましたが、Contextが取得できません。 エラー: None of the following functions can be called with the arguments supplied. <init>(Context!, Class<*>!) defined in android.content.Intent <init>(String!, Uri!) defined in android.content.Intent

該当のソースコード

Kotlin

1override fun onMessage(webSocket: WebSocket, text: String) { 2 send("受信:$text") 3 if(text == "テスト") { 4 val dialogIntent = Intent(this, MainActivity::class.java) // ここのthisが取得できない 5 dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 6 startActivity(dialogIntent) 7 } 8 }

試したこと

thisをapplicationに変更するなどは試しましたが、AppCompatActivityを継承していないのでできない気がします。

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

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

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

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

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

hoshi-takanori

2022/08/04 06:48

何らかの方法で Context またはそのサブクラス (Activity や Application など) をあらかじめ取得しておく必要があります。(Context の扱いは Android の超めんどくさいところです。) というか、そのコードはどこで動いてますか? もしかして Service だったり?
aomorimiyagi

2022/08/05 02:15

ご助言いただきありがとうございます。 Contextの取得が必要とのこと、取得方法を調べて実装してみます。ありがとうございます。 このコード自体はClassとして動いていますが、呼び出し元はServiceです。
guest

回答1

0

自己解決

Socket.IOをServiceクラスで実装し、代用することにより解決しました。

投稿2022/09/03 05:08

aomorimiyagi

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問