对不起,令人困惑的标题。我有一个应用程序,我希望我的用户向我发送反馈。我需要一些不太花哨的东西,只是一个文本框,用户可以在其中键入和按钮,以向我设置的电子邮件帐户发送消息以获取反馈。我希望用户能够在不使用任何电子邮件帐户或其他帐户的情况下执行此操作。我可以使用 JSON 之类的东西来发送反馈吗?
4 回答
要构建一个 url,请在一个方法中使用它。发送的反馈必须送达您,对吗?
String url = "https://blablabla.net/";
StringBuilder sbUrl = new StringBuilder("feedback.jsp?email=");
sbUrl.append(emailId);
sbUrl.append("&content=");
sbUrl.append(textContent);
sbUrl.append("&subject=");
sbUrl.append(subject);
sbUrl.append("&os_version=");
sbUrl.append(OptimumConstants.OS_VERSION);
//如果你想要给你发送反馈等的userId.Person sbUrl.append("&user_id="); sbUrl.append(settings.getString( SomeConstants.LOGGED_IN_USERNAME, "")); //这里你可以附加任何其他请求urlparams,如设备ID、设备类型、操作系统版本等,只有当你想要所有这些信息时 sbUrl.append("&"+Utils.FewOtherRLParams); 网址 += sbUrl.toString();
boolean resp= Utils.sendRequestOnly(url);
return resp;
您可以允许用户通过基本的电子邮件验证检查发送反馈。这部分代码运行在 API 级别 8 及以上。Onclick 发送按钮只是做这个基本的电子邮件验证
public boolean checkEmail(String email) {
try {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
} catch (Exception e) {
Logging.e(TAG, "Email Validation", "Error: "+e.getMessage(),e);
}
return false;
}
如果验证返回 true。然后从编辑文本中获取输入的电子邮件 ID 和文本内容,并构建一个帖子 url 并检查响应是否为 HttpStatus.SC_OK。如果它返回 ok 然后从 post execute 调用您的活动中的一个方法,使用监听器显示已成功发送反馈的弹出窗口。发布 url 并检查响应。在后台执行 url 并将 url 传递给此方法,在您的 Utils 类中的某个位置以返回响应。
public static boolean sendRequestOnly(String url) {
DefaultHttpClient client = returnHttpClient();
HttpGet getRequest = new HttpGet(url);
try {
HttpResponse resp = client.execute(getRequest);
final int statusCode = resp.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
Logging.d("ClassName", "Retreive response", "Status Code "
+ statusCode + " for URL " + url);
return true;
} else {
return false;
}
} catch (IOException e) {
getRequest.abort();
}
return false;
}
您可以使用 GCM(谷歌云消息)。你可以在这里找到代码。
此方法用于连接出现问题时的默认超时,例如套接字超时或连接超时。
public static DefaultHttpClient returnHttpClient() {
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
// The default value is zero, that means the timeout is not used.
int timeoutConnection = 60000;
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 600000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
return new DefaultHttpClient(httpParameters);
}