写在前面的话
每个开发者在工作中会遇到或多或少的小bug,这里博主把它们记录下来,以便以后查阅。
开始
1. file:///storage/emulated/0/DCIM/xxx.jpg exposed beyond app through ClipData.Item.getUri()
解决:将下面的代码拷贝到application的onCreate里面。
// 大于android 7.0系统解决拍照的问题
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();
2.类似快递的时间轴控件
3.录像时调用MediaRecorder的start()时发生start failed: -19错误
在华为、小米等手机上调用录像功能时出现这个错误,把帧率设置成30即可。
mMediaRecorder.setVideoFrameRate(30);
4.Error: Your project contains C++ files but it is not using a supported native build system. Consider...
首先在工程目录下的gradle.properties文件的末尾加上一句:
Android.useDeprecatedNdk=true
然后再在文件build.gradle(Module)里面的buildTypes类中添加一个这样的方法
sourceSets {
main {
jni.srcDirs = []
}
}
5、一篇Android 学习笔记核心篇
6、Kotlin下使用butterknife
需要使用 Kotlin 注解处理工具(Kotlin Annotation processing tool,kapt),在module中进行如下配置
apply plugin: 'kotlin-kapt'
kapt "com.jakewharton:butterknife-compiler:10.1.0"
7、kotlin.UninitializedPropertyAccessException: lateinit property deviceFragment has not been initialized
在fragment中绑定butterknife,需要使用
ButterKnife.bind(this,view)
8.Android 连接MQTT服务失败,报错信息为:无权连接(5)
把连接的调用函数:
@Override
public IMqttToken connect(Object userContext, IMqttActionListener callback)
throws MqttException {
return connect(new MqttConnectOptions(), userContext, callback);
}
改为:第二个参数传NULL即可
@Override
public IMqttToken connect(MqttConnectOptions options, Object userContext,
IMqttActionListener callback) throws MqttException {
...
}
9.Android 共享元素动画不生效问题
常规检查
<item name="android:windowIsTranslucent">true</item>
如果如上设置还是不生效,检查是不是应用禁用了硬件加速
android:hardwareAccelerated="false"
改为: android:hardwareAccelerated="true"