お世話になっております。
android studioでLINE notifyのメッセージを送信するプログラムを組み上げ何とか動作するところまで完成したのですが、今度は画面のボタンを押したときにメッセージを送信したいと思いボタン動作を追加したのですが、これをビルドするとアプリにエラーが出て落ちてしまいます。。。。。
ボタン動作時のコード部分が間違っていると思うのですが、android studioにエラーは出ていないので、コードを記載する箇所がおかしいようなのですが、自分ではどうすればよいか思いつかず苦慮しております。。。。
すいませんが、何とかアドバイス頂けると助かります。
宜しくお願い致します。
12/30追記:ビルドしても画像のエラーが出てアプリが起動ません。
--MainActivity.java-- import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private LineNotify classln; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button sendbutton = findViewById(R.id.send_button); sendbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { classln = new LineNotify(); classln.notify("テストメッセージ"); } }); } }
--LineNotify.java-- import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.Objects; import java.util.stream.Collectors; class LineNotify { private static final String token = "アクセストークン"; public void notify (String message){ Comm t = new Comm(message); t.start(); } static class Comm extends Thread{ private String message; Comm(String message){ this.message = message; } @Override public void run (){ HttpURLConnection connection = null; try { URL url = new URL("https://notify-api.line.me/api/notify"); connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.addRequestProperty("Authorization", "Bearer " + token); try (OutputStream os = connection.getOutputStream(); PrintWriter writer = new PrintWriter(os)) { writer.append("message=").append(URLEncoder.encode(message, "UTF-8")).flush(); try (InputStream is = connection.getInputStream(); BufferedReader r = new BufferedReader(new InputStreamReader(is))) { String res = r.lines().collect(Collectors.joining()); if (!res.contains("\"message\":\"ok\"")) { System.out.println(res); System.out.println("失敗"); } } } } catch (Exception ignore) { } finally { if (connection != null) { connection.disconnect(); } } } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; LineNotify that = (LineNotify) o; return Objects.equals(token, that.token); } @Override public int hashCode() { return Objects.hash(token); } @Override public String toString() { return "LineNotify{" + "token='" + token + '\'' + '}'; } } }
あなたの回答
tips
プレビュー