为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2022-09-01 16:28:26
我的问题是,当我在真正的移动设备上运行我的应用程序时,会显示以下错误: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";@Overrideprotected 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);                     }                 }
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

如果您在Android 9 Pie中进行测试,那么您必须在清单标签中设置网络安全配置,以允许所有HTTP和HTTPS网络连接。另外,请检查您是否提供了INTERNET权限。application


<?xml version="1.0" encoding="utf-8"?>

<manifest ... >

    <application android:networkSecurityConfig="@xml/network_security_config">



    </application>

</manifest>

然后在您的xml文件夹中,您现在必须创建一个名为network_security_config的文件,就像您在清单中命名它的方式一样,从那里开始,您的文件内容应该如下所示,以启用所有请求而无需加密:


<?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>


查看完整回答
反对 回复 2022-09-01
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

最有可能的是,该错误是由于连接问题造成的。https://10.0.2.2 必须是本地主机 IP 地址。在 Android 设备上运行的应用程序无法连接到本地主机服务器。

解决 方案:

  • 您可以使用 ngrok。基本上,它会创建一个到本地主机的隧道,您可以通过该隧道连接到本地主机服务器。我个人已经将其与本地主机上托管的Flask API一起使用

  • 您还可以在AWS(亚马逊网络服务),Hostinger或其他云服务上托管您的服务器。我使用Hostinger在PHP中托管我的API。


查看完整回答
反对 回复 2022-09-01
?
互换的青春

TA贡献1797条经验 获得超6个赞

这是错误的 IP 地址。10.0.2.2 仅适用于模拟器,因为这是主机和模拟器之间专用网络的 IP。对于wifi,您需要使用真实的IP地址,并确保wifi网络设置为允许该IP /端口上的传入连接。对于蜂窝网络,您需要确保这种情况一直持续到您的ISP


查看完整回答
反对 回复 2022-09-01
  • 3 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信