1.安卓10获取不到IMEI信息,使用以下代码获取
public String getIMEIDeviceId(Context context) {
String deviceId;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
deviceId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
} else {
final TelephonyManager mTelephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (context.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
return "";
}
}
assert mTelephony != null;
if (mTelephony.getDeviceId() != null)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
deviceId = mTelephony.getImei();
}else {
deviceId = mTelephony.getDeviceId();
}
} else {
deviceId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
}
Log.d("deviceId", deviceId);
return deviceId;
}
2.安卓10获取不到系统文件解决方法,在manifest.xml中的Application标签中加入下面的配置,此属性仅在API29及以上可使用
<application
android:requestLegacyExternalStorage="true">
3.安卓10之后侧滑菜单使用androidx.drawerlayout.widget.DrawerLayout
4.Http请求失败
(1)添加网络安全配置。首先在 res 目录下新建xml文件夹,添加network_security_config.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
(2)AndroidManifest.xml中的application添加:
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
...
</application>
</manifest>
(3)以上这是一种简单粗暴的配置方法,要么支持http,要么不支持http。为了安全灵活,我们可以指定支持的http域名:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- Android 9.0 上部分域名时使用 http -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">aaa.example.com</domain>
</domain-config>
</network-security-config>
5.Apache HTTP 客户端弃用,Android 9.0 开始,默认情况下该库已从 bootclasspath 中移除,如果想使用,需要在应用的 AndroidManifest.xml 文件中添加:
<manifest ... >
<application>
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
...
</application>
</manifest>
网友评论