java - 我的应用程序在我的 android 模拟器上运行,但它在我的真实移动设备上不运行

标签 java android runtime-error

我的问题是,当我在真实的移动设备上运行我的应用程序时,会显示以下错误:com.android.volley.TimeoutError”。但是,通过使用 Android studio 的模拟器,它可以完美运行。由于必须有时此错误是由连接问题引起的,我是否为我的应用程序使用了正确的 ip?即

"私有(private)静态字符串 URL_REGIST ="http://10.0.2.2:81/android_register_login/register.php"; "

我是应用程序开发的新手,因此非常感谢任何帮助。 下面是 register.java 的代码,它使用了用于执行注册的 register.php 脚本

private EditText name,email,password,c_password;
private Button btn_regist;
private ProgressBar loading;
private static String URL_REGIST ="http://10.0.2.2:81/android_register_login/register.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);
    loading = findViewById(R.id.loading);
    name= findViewById(R.id.name);
    email = findViewById(R.id.email);
    password = findViewById(R.id.password);
    c_password = findViewById(R.id.c_password);

    btn_regist =findViewById(R.id.btn_regist);

    btn_regist.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Regist();
        }
    });
}

private void Regist(){
    loading.setVisibility(View.VISIBLE);
    btn_regist.setVisibility(View.GONE);

    final String name = this.name.getText().toString().trim();
    final String email = this.email.getText().toString().trim();
    final String password = this.password.getText().toString().trim();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_REGIST,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                 try {
                     JSONObject jsonObject = new JSONObject(response);
                     String success = jsonObject.getString("success");

                     if(success.equals("1")){
                         Toast.makeText(RegisterActivity.this, "Account Created",Toast.LENGTH_SHORT).show();
                         loading.setVisibility(View.GONE);
                     }
                 }catch (JSONException e) {
                     e.printStackTrace();
                     Toast.makeText(RegisterActivity.this, "Register Error!" + e.toString(),Toast.LENGTH_SHORT).show();
                     loading.setVisibility(View.GONE);
                     btn_regist.setVisibility(View.VISIBLE);

                 }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                    Toast.makeText(RegisterActivity.this, "Register Error!" + error.toString(),Toast.LENGTH_SHORT).show();
                    loading.setVisibility(View.GONE);
                    btn_regist.setVisibility(View.VISIBLE);
                }
            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("name", name);
            params.put("email", email);
            params.put("password", password);

            return params;
        }
    };



    RequestQueue requestQueue = Volley.newRequestQueue(this);


    requestQueue.add(stringRequest);

}

最佳答案

如果您在 Android 9 Pie 中进行测试,则必须在 list application 标记中设置 networkSecurityConfig 以允许所有 HTTP 和 HTTPS 网络连接。另外,检查您是否提供了 INTERNET 权限。

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config">


    </application>
</manifest>

然后在你的 xml 文件夹中,你现在必须创建一个名为 network_security_config 的文件,就像你在 list 中命名它的方式一样,从那里你的文件的内容应该是这样的,以启用所有没有加密的请求:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

关于java - 我的应用程序在我的 android 模拟器上运行,但它在我的真实移动设备上不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326611/

相关文章:

C++ Eigen 抛出错误但完成计算

android - 您的内容必须有一个 id 属性为 ' android.r.id.list ' 的 ListView 。

.net - 无法在 Windows XP 上运行 Visual Studio 2012 程序

java - 使用 Liquibase 和 Spring 合并来自数据库的值

Java:组合 JSpinners、事件监听器和文本字段

Java 堆大小比 -Xmx 大 20 倍 - 这怎么可能?

安卓数据库: A few simple questions from a beginner

java - 使用 LDAP 验证特定请求的凭据

android - 将文件类型与 Android 应用关联失败

java - 在 android 中使用字符串的数字选择器显示完整的文本值