我的应用程序正在我的Android模拟器上运行,但它无法在我的真实移动设备上工作

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


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


我是应用程序开发的新手,因此非常感谢任何帮助。以下是用于注册的代码.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);

                     }

                 }

一只名叫tom的猫
浏览 141回答 3
3回答

一只萌萌小番薯

如果您在Android 9 Pie中进行测试,那么您必须在清单标签中设置网络安全配置,以允许所有HTTP和HTTPS网络连接。另外,请检查您是否提供了INTERNET权限。application<?xml version="1.0" encoding="utf-8"?><manifest ... >&nbsp; &nbsp; <application android:networkSecurityConfig="@xml/network_security_config">&nbsp; &nbsp; </application></manifest>然后在您的xml文件夹中,您现在必须创建一个名为network_security_config的文件,就像您在清单中命名它的方式一样,从那里开始,您的文件内容应该如下所示,以启用所有请求而无需加密:<?xml version="1.0" encoding="utf-8"?><network-security-config>&nbsp; &nbsp; <base-config cleartextTrafficPermitted="true">&nbsp; &nbsp; &nbsp; &nbsp; <trust-anchors>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <certificates src="system" />&nbsp; &nbsp; &nbsp; &nbsp; </trust-anchors>&nbsp; &nbsp; </base-config></network-security-config>

白猪掌柜的

最有可能的是,该错误是由于连接问题造成的。https://10.0.2.2&nbsp;必须是本地主机 IP 地址。在 Android 设备上运行的应用程序无法连接到本地主机服务器。解决 方案:您可以使用 ngrok。基本上,它会创建一个到本地主机的隧道,您可以通过该隧道连接到本地主机服务器。我个人已经将其与本地主机上托管的Flask API一起使用您还可以在AWS(亚马逊网络服务),Hostinger或其他云服务上托管您的服务器。我使用Hostinger在PHP中托管我的API。

互换的青春

这是错误的 IP 地址。10.0.2.2 仅适用于模拟器,因为这是主机和模拟器之间专用网络的 IP。对于wifi,您需要使用真实的IP地址,并确保wifi网络设置为允许该IP /端口上的传入连接。对于蜂窝网络,您需要确保这种情况一直持续到您的ISP
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java