Android开发问题汇总(一直在更新)

1.如何进入页面不focus任何view?
设置父布局
    android:focusable="true" 
    android:focusableInTouchMode="true"
2.为何添加了测试库,但扔import不到?
testCompile
androidTestCompile
在
buildTypes {
    debuggable true
}
才生效
3.canvas.drawText垂直居中
参数y为baseline
baseline = height - FontMetrics.bottom - FontMetrics.top
4. over bounds of view
    setClipChildren
    setClipToPadding
5.lineSpacing的版本兼容
TextView lineSpacing  api<21 包含一行间距, api>=21不包含,需要通过value,value-21做兼容
6.指定abi编译

build.gradle

ndk {
        abiFilters = []
        abiFilters.addAll(ABI_FILTERS.split(';').collect{it as String})
}

gradle.properties

ABI_FILTERS=armeabi
7.VIVO adb install

gradle.properties

android.injected.testOnly = false
8.使用EventBus Subscriber Index 时 未执行并生成索引文件
@SupportedAnnotationTypes("org.greenrobot.eventbus.Subscribe")
@SupportedOptions(value = {"eventBusIndex", "verbose"})
public class EventBusAnnotationProcessor extends AbstractProcessor {
……
}

只有包含getSupportedAnnotationTypes类型的项目才会执行AnnotationProcessor,当前library并没有使用@org.greenrobot.eventbus.Subscribe注解

9.个别机型点击通知栏通知无法跳转到APP

在设置中开启权限

10.查看keystore信息
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
image.png
11.支持zip,rar,7z等格式文件使用APP打开
<intent-filter android:label="用zz漫画阅读">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="application/zip"/>
    <data android:mimeType="application/x-rar-compressed"/>
    <data android:mimeType="application/rar"/>
    <data android:mimeType="application/x-7z-compressed"/>
    <data android:mimeType="image/*"/>
</intent-filter>
12.socket中readline与read的区别?

readline的时候,只有接收到换行符才能收到数据。

13.Gradle依赖下载目录
#Mon Apr 24 10:55:41 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip

会下载到GRADLE_USER_HOME目录

.gradle/wrapper/dists/
遇到Failed to open zip file.

到.gradle/wrapper/dists/目录下,找到对应版本
通过distributionUrl直接下载下来zip包复制到对应版本目录下即可(删除已存在的zip包,大多情况是因为以前下载了一部分非完整的zip包导致打不开zip文件)

14.android studio 3.0打包
library中的buildTypes要和application中的一致
15.查看包名和签名
//查看apk签名信息
keytool -printcert -jarfile xxx.apk
//查看keystore签名信息,执行后会提示“输入密钥库口令”
keytool -list -v -keystore xxx.jks
keytool -list -v -keystore xxx.keystore
//查看apk包名
aapt dump badging xxx.apk
//aapt在/android-sdks/build-tools/28.0.3/下,28.0.3为build-tools版本
16.Only fullscreen opaque activities can request orientation

source:android-26(O)

解决办法1
去掉AndroidManifest中的screenOrientation,在onCreate中根据系统版本设置

@Override
protected void onCreate(Bundle savedInstanceState) {
    if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O) {
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

条件:
targetSdkVersion > O
设置了screenOrientation
isTranslucentOrFloating == true
解决办法2
设置isFixedOrientation = false
设置isTranslucentOrFloating=false

protected void onCreate(@Nullable Bundle savedInstanceState) {
    if (getApplicationInfo().targetSdkVersion > O && mActivityInfo.isFixedOrientation()) {
       final TypedArray ta = obtainStyledAttributes(com.android.internal.R.styleable.Window);
        final boolean isTranslucentOrFloating = ActivityInfo.isTranslucentOrFloating(ta);
            ta.recycle();

        if (isTranslucentOrFloating) {
        throw new IllegalStateException(
                "Only fullscreen opaque activities can request orientation");
        }
    }
}
//windowIsTranslucent,windowSwipeToDismiss,windowIsFloating返回true
public static boolean isTranslucentOrFloating(TypedArray attributes) {
        final boolean isTranslucent =
                attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsTranslucent,
                        false);
       final boolean isSwipeToDismiss = !attributes.hasValue(
                com.android.internal.R.styleable.Window_windowIsTranslucent)
                && attributes.getBoolean(
                        com.android.internal.R.styleable.Window_windowSwipeToDismiss, false);
        final boolean isFloating =
                attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsFloating,
                        false);

        return isFloating || isTranslucent || isSwipeToDismiss;
    }
17.360加固配置多个签名时如何选择签名的?
//360加固配置多个签名时会自动选择加固前签名完成自动签名
18.Android 5.1 webview加载网页空白页面,提示Uncaught SyntaxError: Unexpected xxxx
#不支持高级语法#
//不要用ajax
//不要使用 let
//箭头函数
//等等
19.如何手动下载并引入库
//
#生成目录名称
shasum {filePath}
#使用上一步生成的名称name
.gradle/caches/modules-2/files-2.1/package-name/{项目名}/{版本}/{name}/xxxx.pom

手动下载并引入库-目录结构-pom

手动下载并引入库-目录结构-aar

参考 https://www.jianshu.com/p/5c475b95a819

20.使用ScrollView时键盘遮盖输入框
把ScrollView改用NestedScrollView
21.设置了android:windowSoftInputMode="adjustPan"但未生效
//代码设置
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
22. getDimension, getDimensionPixelOffset, getDimensionPixelSize
//return 10.4
float getDimension()
TypedValue.complexToDimension
//return 10
int getDimensionPixelOffset()
TypedValue.complexToDimensionPixelOffset
//return 11
int getDimensionPixelSize()
TypedValue.complexToDimensionPixelSize
23.微信分享时提示“签名不对,请检查签名是否与开放平台上填写的一致。”
1.签名信息取md5值
2.杀掉微信,重试
24.android 29+获取不到蓝牙信息
需添加权限ACCESS_FINE_LOCATION
25.查看当前页面路径
adb shell dumpsys activity | grep mFocusedActivity
26.解决RecyclerView中多个EditText无法长按复制粘贴的问题
//1.只看结果 >> pengboboer https://blog.csdn.net/pengbo6665631/article/details/97794784
//重写adapter的此方法,然后调用viewholder中的edittext的setEanble方法
@Override
    public void onViewAttachedToWindow(SimpleViewHolder<PostPublishItem> holder) {
        super.onViewAttachedToWindow(holder);
        holder.editText.setEnable(false);
        holder.editText.setEnable(true);
    }
//2.分析原因 >> https://www.jianshu.com/p/e334134a4ef7
prepareCursorControllers方法设置了mInsertionControllerEnabled
27.旧项目编译问题

通常是gradle版本问题
可以到 https://gradle.org/releases/ 下载对应版本
放到 问题13的目录里

28.日期格式化问题

Android 6.0(23)及以下系统
Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'X'

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
sdf.format(new Date());
time zone sdk 24+
z:GMT-08:00
Z:-0800
X:-08, -0800, -08:00
time zone sdk 23-
Z/ZZ/ZZZ:-0800 
ZZZZ:GMT-08:00 
ZZZZZ:-08:00
29.Android 7.1(25) Toast 崩溃BadTokenException

可以通过反射拿到TN的mHandler参数,替换为自定义的mHandler,自定义mHandler中catch到BadTokenException错误。
官方修复
Android O (API Level 26) 使用try catch解决

//Toast.java
public void handleShow(IBinder windowToken) {
  ...
  try {
    mWM.addView(mView, mParams);
    trySendAccessibilityEvent();
  } catch (WindowManager.BadTokenException e) {
    /* ignore */
  }
  ...
}
30.关闭通知权限无法显示toast

Toast.show()方法内部调用了NotificationManagerService. enqueueToast()

public void show() {
        if (mNextView == null) {
            throw new RuntimeException("setView must have been called");
        }

        INotificationManager service = getService();
        String pkg = mContext.getOpPackageName();
        TN tn = mTN;
        tn.mNextView = mNextView;

        try {
            service.enqueueToast(pkg, tn, mDuration);
        } catch (RemoteException e) {
            // Empty
        }
    }

enqueueToast方法中判断了开起了通知权限才会继续执行显示toast功能

 public void enqueueToast(String pkg, ITransientNotification callback, int duration)
        {
if (ENABLE_BLOCKED_TOASTS && !isSystemToast &&
                    (!areNotificationsEnabledForPackage(pkg, Binder.getCallingUid())
                            || isPackageSuspended)) {
                Slog.e(TAG, "Suppressing toast from package " + pkg
                        + (isPackageSuspended
                                ? " due to package suspended by administrator."
                                : " by user request."));
                return;
            }
}

Toast的显示时长也是在NotificationManagerService里定义的。
LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT =3.5s
SHORT_DELAY = 2s

31.Android Studio 3.5升级后,Reformat Code操作导致布局错乱的问题

a.打开Preferences...

image.png

a.搜索Code Style XML

image.png

a.找到 Set from...
b.选择Predefined Styled-Android
c.保存

image.png
21.Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException

Android Studio 4.2.0以下版本,自带的jdk 1.8
Android Studio 4.2.0及以上版本,自带的jdk 11

Project Structure的SDK Location中指定jdk1.8版本路径(自行安装sdk1.8)

22.Android Studio快捷键设置
image.png
22.android-parcelable-intellij-plugin不支持androidStudio4.1+

https://github.com/mcharmas/android-parcelable-intellij-plugin/issues/75

23.Non-terminating decimal expansion; no exact representable decimal result

BigDecimal的divide方法出现了无限循环小数
data1.divide(data2, n, BigDecimal.ROUND_UP)指定n位小数并 指定roundingMode

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容