Я пытаюсь запустить в качестве фоновой задачи этот код.
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);
}
}
}