前提・実現したいこと
プログラミング初心者です。
アプリ内で作成したJSONファイルを接続中のPCのローカルディスク下のtmpフォルダに送信し、その後PC側から受け取ったJSONファイルの内容をListViewに表示するというアプリを作成していますが、android側からPC側へのファイル送信方法が分からず作業の進捗が止まっている状態です。
android端末とPCはbluetoothで接続している状態です。
どなたかご教授いただければ幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
package com.example.bearingcheck4; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.GridView; import android.widget.TextView; import org.json.JSONArray; import org.json.JSONException; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @RequiresApi(api = Build.VERSION_CODES.O) public class MainActivity extends AppCompatActivity { ProgressDialog progressDialog; Thread thread; //表示データ関連 private static final int REQUEST_ENABLE_BLUETOOTH = 1; private static final int READ_REQUEST_CODE = 1; private String engin_type; private String engin_Engraving; public MainActivity() { } //今日の日付 LocalDateTime date = LocalDateTime.now(); DateTimeFormatter dtformat = DateTimeFormatter.ofPattern("HH時mm分ss秒"); String fdate = dtformat.format(date); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 外部ファイルの選択ダイアログを表示 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); startActivityForResult(intent, READ_REQUEST_CODE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { super.onActivityResult(requestCode, resultCode, resultData); //ダイアログ画面から結果を受けた後の処理を記述 try { // ダイアログの応答結果が正常の場合 if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) { if (resultData != null) { // 選択したファイルのURIを取得 Uri uri = resultData.getData(); // JSONファイルの読み込み final JsonReader jsonReader = new JsonReader(); jsonReader.reader(getApplicationContext(), uri); // 処理対象番号の初期化 // 処理対象番号 int targetNumber = 0; // 最大アイテム数の取得 // 最大アイテム数 int maxItemSize = jsonReader.jsonList.size(); // Viewに処理対象の情報を設定 final ArrayList<ListData> jsonList = jsonReader.jsonList; final gridViewAdapter gridViewAdapter = new gridViewAdapter(this, 0, jsonList); // エンジン名の設定 StringBuilder sb = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); sb.append(jsonReader.engin_type); engin_type = new String(sb); sb2.append(jsonReader.engin_Engraving); engin_Engraving = new String(sb2); // エンジン名 String engin_name = new String(sb); TextView engine_name = findViewById(R.id.engine_name); engine_name.setText(engin_name); // 一覧(engineType)を生成 GridView gridView = findViewById(android.R.id.list); gridView.setAdapter(gridViewAdapter); } } } catch (Exception e) { e.printStackTrace(); } Button button = this.findViewById(R.id.toNext); progressDialog = new ProgressDialog(this); // ボタンにクリックイベントをセット button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("確認"); builder.setMessage("次の型に移行しますか?"); builder.setPositiveButton("はい", new DialogInterface.OnClickListener() { @Override // progressDialogの表示 public void onClick(DialogInterface dialog, int which) { progressDialog.setMessage("待機中"); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.show(); thread = new Thread(String.valueOf(this)); thread.start(); // 型式確認後の処理 // 確認報告をJSONFileにしてPC側に送信 try { JSONArray jary = new JSONArray(); jary.put("型式:" + engin_type); jary.put("製造番号:" + engin_Engraving); jary.put("確認完了"); String data = jary.toString(4); // 作成したJSONをファイル出力 FileOutputStream outStream = openFileOutput("BearingResult." + fdate + ".json", MODE_PRIVATE); OutputStreamWriter writer = new OutputStreamWriter(outStream); writer.write(data); writer.flush(); writer.close(); outStream.close(); } catch (JSONException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } // 作成したファイルをbluetooth接続中のPCのC:\tempに送信 // 送信後にPC側からファイルの受け取り // PC側からファイルが送られてこなかった場合の処理 // progressDialogを閉じる progressDialog.dismiss(); } }); builder.setNegativeButton("いいえ", null); builder.show(); } }); } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
AndroidStudio4.0.0, Java
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/01 04:10