我听着就PhoneStateListener的变化,我想使每个有变化时的URL请求。我将任何输入感谢。
我曾尝试用下面的代码没有成功摆弄。日志信息工作正常,但请求到web服务器无法正常工作。
private class PhoneCallListener extends PhoneStateListener{
private boolean isPhoneCalling = false;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (TelephonyManager.CALL_STATE_RINGING == state)
{
// phone ringing
Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
try {
URL url = new URL("http://example.com/log.php?state=Ringing");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.disconnect();
}
catch (MalformedURLException ex) {
Log.e("httptest",Log.getStackTraceString(ex));
}
catch (IOException ex) {
Log.e("httptest",Log.getStackTraceString(ex));
}
Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
}
}
}
你可能没有权限https://developer.android.com/training/permissions/requesting
并尝试运行在工作线程的HTTP IO代码:
private class PhoneCallListener extends PhoneStateListener {
private boolean isPhoneCalling = false;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (TelephonyManager.CALL_STATE_RINGING == state)
{
new AsyncTask<String,Void,Void>(){
@Override
protected Void doInBackground(String... voids) {
// phone ringing
String incomingNumber=voids[0];
Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
try {
URL url = new URL("http://example.com/log.php?state=Ringing");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.disconnect();
}
catch (MalformedURLException ex) {
Log.e("httptest",Log.getStackTraceString(ex));
}
catch (IOException ex) {
Log.e("httptest",Log.getStackTraceString(ex));
}
Log.i("LOG_TAG", "RINGING, number: " + incomingNumber);
return null;
}
}.execute(incomingNumber);
}
}
}
也看看有没有任何网络问题;例如DNS,访问策略,路由问题...