【问题标题】:Android Studio Code Dont Work On Android Version 9.0Android Studio 代码不适用于 Android 9.0 版
【发布时间】:2019-12-13 23:54:13
【问题描述】:

请我的 Android 应用程序在任何 Android 应用程序版本中都能正常工作,但在 android 9.0 上不能工作?? 在模拟器上从android studio运行代码时没有错误显示..

这是我的 login_activity.java

package com.steam.carwash.activities;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.util.Log;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.icanstudioz.sclient.R;
import com.steam.carwash.Server.Server;
import com.steam.carwash.custom.MyApplication;
import com.steam.carwash.fragment.ForgotPassword;
import com.steam.carwash.model.ResObj;
import com.steam.carwash.model.User;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.Callback;
import com.lzy.okgo.model.HttpParams;
import com.lzy.okgo.model.Progress;
import com.lzy.okgo.model.Response;
import com.lzy.okgo.request.base.Request;
import com.norbsoft.typefacehelper.TypefaceHelper;
import com.steam.carwash.permissionhelper.ActivityManagePermission;

import org.json.JSONObject;

import okhttp3.ResponseBody;



public class LoginActivity extends ActivityManagePermission {
EditText email, password;
Button login;
TextView register, forgot;
private ProgressDialog mProgress;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_activity);
    bindViews();

}

private void bindViews() {

    mProgress = new ProgressDialog(this);
    mProgress.setTitle("Processing...");
    mProgress.setMessage("Please wait...");
    mProgress.setCancelable(false);
    mProgress.setIndeterminate(true);

    email =  findViewById(R.id.input_email);
    password = findViewById(R.id.input_password);
    login = findViewById(R.id.btn_login);
    register = findViewById(R.id.txt_register);
    forgot = findViewById(R.id.txt_forgot);
    register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
            finish();
        }
    });
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (validate()) {
                final String eml = email.getText().toString().trim();
                final String pwd = password.getText().toString().trim();


                FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
                    @Override
                    public void onSuccess(InstanceIdResult instanceIdResult) {
                        Toast.makeText(LoginActivity.this, "Error", Toast.LENGTH_SHORT).show();
                        loginUser(eml, pwd,instanceIdResult.getToken());
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        loginUser(eml, pwd,"");
                    }
                });
            }

        }
    });

    forgot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(LoginActivity.this, ForgotPassword.class));
        }
    });

    TypefaceHelper.typeface(email, MyApplication.getLight());
    TypefaceHelper.typeface(password, MyApplication.getLight());
    TypefaceHelper.typeface(register, MyApplication.getRegular());
    TypefaceHelper.typeface(forgot, MyApplication.getRegular());
    TypefaceHelper.typeface(login, MyApplication.getRegular());


}

private Boolean validate() {

    String eml = email.getText().toString().trim();
    String pwd = password.getText().toString().trim();
    if (!Patterns.EMAIL_ADDRESS.matcher(eml).matches()) {
        email.setError(getString(R.string.email_is_invalid));
    } else if (pwd.isEmpty()) {
        password.setError(getString(R.string.password_is_required));
    } else {
        //Toast.makeText(LoginActivity.this, "Is Valid", Toast.LENGTH_SHORT).show();
        return true;
    }
    return false;
}

private void loginUser(String email, String password, String token) {
    Toast.makeText(LoginActivity.this, "okiii", Toast.LENGTH_SHORT).show();
    HttpParams params = new HttpParams();
    params.put("type", "simple");
    params.put("utype", "0");
    params.put("email", email);
    params.put("password", password);
    params.put("fcm_token", token);
    OkGo.<ResObj<User>>post(Server.BASE_URL + "user/login").params(params).execute(new Callback<ResObj<User>>() {
        @Override
        public void onStart(Request<ResObj<User>, ? extends Request> request) {
            //Toast.makeText(LoginActivity.this, "ok", Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onSuccess(Response<ResObj<User>> response) {
            Toast.makeText(LoginActivity.this, "Login On Success", Toast.LENGTH_SHORT).show();
            if (response.body() != null) {
                Toast.makeText(LoginActivity.this, "Good Job", Toast.LENGTH_SHORT).show();

                ResObj<User> userResObj = response.body();
                User user = userResObj.getData();
                HttpParams params1=new HttpParams();
                params1.put("access_token",user.getAccess_token());
                params1.put("user_id",user.getId());

                OkGo.getInstance().addCommonParams(params1);
                MyApplication.getInstance().setUser(user);
                MyApplication.getInstance().createLoginSession(user.getName(), user.getEmail(), user.getId(), user.getFcm_token(),user.getAccess_token());
                startActivity(new Intent(LoginActivity.this, HomeActivity.class));
                Toast.makeText(LoginActivity.this, "Good b", Toast.LENGTH_SHORT).show();

                finish();
            }
            else
                Toast.makeText(LoginActivity.this, "Error 2", Toast.LENGTH_SHORT).show();


        }

        @Override
        public void onCacheSuccess(Response<ResObj<User>> response) {

        }

        @Override
        public void onError(Response<ResObj<User>> response) {

        }

        @Override
        public void onFinish() {
        }

        @Override
        public void uploadProgress(Progress progress) {

        }

        @Override
        public void downloadProgress(Progress progress) {

        }

        @Override
        public ResObj<User> convertResponse(okhttp3.Response response) throws Throwable {
            try {
                ResponseBody responseBody = response.body();

                String s = responseBody.string();
                JSONObject jsonObject = new JSONObject(s);

                Toast.makeText(LoginActivity.this, s, Toast.LENGTH_SHORT).show();

                if (jsonObject.getString("status").equalsIgnoreCase("success")) {
                    return new Gson().fromJson(s, new TypeToken<ResObj<User>>() {
                    }.getType());
                } else {
                    MyApplication.getInstance().showToast(LoginActivity.this, jsonObject.getString("data"));
                }
            } catch (Exception e) {
                //Log.e("catch", e.toString());
                Toast.makeText(LoginActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();


            }
            return null;
        }
    });

}
}

这是我的 androidmainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.icanstudioz.sclient">

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />


<application
    android:networkSecurityConfig="@xml/network_security_config"
    android:debuggable="true"
    android:name="com.steam.carwash.custom.MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/splash"
    android:label="@string/app_name"
    android:roundIcon="@drawable/boy"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="HardcodedDebugMode">
    <uses-library android:name="org.apache.http.legacy" android:required="false"/>
    <activity android:name="com.steam.carwash.activities.SplashScreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.steam.carwash.fragment.ForgotPassword"/>

    <activity android:name="com.steam.carwash.permissionhelper.ActivityManagePermission"/>
    <activity
        android:name="com.steam.carwash.activities.HomeActivity"
        android:fitsSystemWindows="true"
        android:windowSoftInputMode="adjustResize|stateAlwaysHidden" />
    <activity android:name="com.steam.carwash.activities.LoginActivity" />

    <activity android:name="com.steam.carwash.activities.PaymentActivity"/>
    <activity
        android:name="com.steam.carwash.activities.RegisterActivity"
        android:windowSoftInputMode="adjustPan" />
    <activity android:name="com.steam.carwash.activities.fullImage" />

    <service android:name="com.steam.carwash.Server.MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/c_id" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_launcher_foreground" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message.  -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorPrimaryDark" />

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="AIzaSyBX8-V0iihmTnrgwYlyI5GdP0GKjwfTTd8" />
</application>

当在 android 8.0 或更低版本上运行时,它运行良好...但问题出在 9 或更高版本上??

【问题讨论】:

  • “不工作”到底是什么意思?它崩溃了吗?它只是没有按您的预期运行吗?如果是这样,怎么做?请edit您的问题更好地解释问题。

标签: android-studio version okhttp


【解决方案1】:

只需将以下行放在应用程序标签下的清单中并尝试

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

如果不起作用,请尝试在应用程序标记下添加以下行

android:usesCleartextTraffic="true

,即使它不起作用尝试添加

android:networkSecurityConfig="@xml/network_security_config

在 network_security_config.xml 所在的应用程序标记中

<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>

在 res 目录下创建 xml,然后在 xml 文件夹中创建 network_security_config.xml

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 2020-04-11
    • 2016-06-28
    • 1970-01-01
    • 2019-06-09
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多