Запуск асинхронной службы - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь запустить в качестве фоновой задачи этот код.

package com.ibm.watson.developer_cloud.android.myapplication;

import android.app.AlertDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class BackgroundReadTranscriptWorker extends AsyncTask<String, Void, String> {
    Context context;
    AlertDialog alertDialog;
    String json_string;
    StringBuilder stringBuilder;
    String results;
    BackgroundReadTranscriptWorker(Context ctx){
        context = ctx;
    }

    @Override
    protected String doInBackground(String... params) {
        String type = params[0];
        String login_url = "http://colconnect.eodtranslations.asia/gettranscripts.php";
        if(type.equals("insert")){
            try {
                String tuid = params[1];


                URL url = new URL(login_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
                String post_data = URLEncoder.encode("user_num","UTF-8")+"="+URLEncoder.encode(tuid,"UTF-8");

                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                /*InputStream inputStream = httpURLConnection.getInputStream();



                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.ISO_8859_1));
               stringBuilder=new StringBuilder();
                String result="";
                String line="";
                while((json_string = bufferedReader.readLine())!= null) {
                 stringBuilder.append(json_string+"\n");

                }


                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
               results= stringBuilder.toString().trim();*/
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.ISO_8859_1));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            catch (IOException e) {
                e.printStackTrace();
            }

        }
        return null;
    }

    @Override
    protected void onPreExecute() {

    }

    @Override
    protected void onPostExecute(String result) {

        if (result.contains("success")){

          //  System.out.println(results);
            //Toast.makeText(context, results,Toast.LENGTH_SHORT).show();
        }
        else{
            Toast.makeText(context, "Unable to get!",Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}

Задача - собрать данные из онлайн-базы данных и отобразить их на тосте. Я пытаюсь выполнить этот код при входящем звонке, но он, кажется, не выполняется, когда действительно есть входящий звонок. Возможно ли, чтобы это было выполнено как услуга?

это мой слушатель состояния телефона

 public class CallReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
               // startService(v);
                //startRecordingService(context);
               // startSTT();
                showToast(context, "Call started. . .");
                String type= "insert";
                BackgroundReadTranscriptWorker brtw = new BackgroundReadTranscriptWorker(MainActivity.this);
                brtw.execute(type,number);



            }
            else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE)){
                showToast(context, "Call ended. . .");

                int pid = android.os.Process.myPid();
                android.os.Process.killProcess(pid);
            }
        }

    }
...