Android日常开发问题总结:这些问题火候不够,随时变成删库跑路

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

}

也就是要加上面的FLAG_ACTICITY_NEW_TASK(其它手机看到是ok的)

3.设置TextView的颜色值无效

titleTv.setTextColor(colorId);//错误的方式(常见封装类调用)

titleTv.setTextColor(ContextCompat.getColor(context,colorId));//正确的方式

4.国际化引用问题

a.静态/类全局变量需要单独判断;

b.string 中文本空格效果无法体现,给字符串加上双引号

中 文

" 中 文 "

注意:使用Application.getString的方式,在切换语言后,并没有切换这种方式引用的资源内容。可以改为另外的activity里面的getString方法获取

5.魅族7.0的系统在webview中点击后闪退

ActivityManagerForce removing ActivityRecord{6dd5804 u0 包名/当前WebviewActivity t8819}: app died, no saved state

不支持onCustumView方法,去掉即可

6.button上的英文默认为大写

android:textAllCaps=“false”

7.vivo上收到push后打不开指定的页面(根本就没反应)

系统会自动弹出,但是进入设置打开即可。

8.TextView显示不全

TextView使用WrapContent,lines=1但是内容显示不全

只能显示在屏幕内的部分,在屏幕外的部分,在属性动画拉出来看的时候就没有。

(这种问题发生在自定义跑马灯控件时)

public static int getTextViewLength(TextView view, String text) {

TextPaint paint = view.getPaint();

int textLength = (int) Layout.getDesiredWidth(text, 0, text.length(), paint);

return textLength;

}

然后给TextView设置宽度。

9. No Activity found to handle Intent { act=android.intent.action.VIEW_DOWNLOADS flg=0x10000000 }

三星 SM-C7000(C7) 6.0.1的系统就会出现在这个问题

if(intent.resolve(context.getPackageManager))!=null){

}

使用隐式intent进行startActivity时,最好加上该种判断和try catch,因为保不准哪种机型就出问题了

10.设置dialog边角

getWindow().setBackgroundDrawableResource(R.drawable.widget_dialog_round_corner);

11.三星机型报错E/rsC++(16241): RS CPP error: Blur radius out of 0-25 pixel bound

大意就是TextView的shadowRadius不能大于25,是xml代码中的问题,改小shadowRadius即可。

包括button下的部分模糊的情况也是该问题导致的。

12.分享链接至微信无法显示链接的缩略图

友盟分享链接如果内容中带有红包字样,那么图片会失效显示不出来(分享的主体倒是可以自己看到)

13.小米手机上的App使用浏览器打开尾缀带apk的地址无法正常下载安装

阿里云、应用宝的地址是会被拦截到使用小米手机系统自带的下载器进行下载安装,而这个下载器会默认使用迅雷下载组件,阿里云的地址下载完毕后点击下载完成的push会显示文件无法识别(而应用宝的地址能正常安装),小米系及华为应用的下载地址以及非.apk结尾的地址则会按照正常流程跳入浏览器进行下载。关闭小米手机上的迅雷下载组件的功能后,则可以通过点击push正常安装,不会出现文件无法识别的问题。

所以解决这个问题的很简单,把下载地址换成非apk结尾的地址即可

14.桌面图标不更换的原因

android:roundIcon="@mipmap/logo"

application中这个属性也要设置

15.优化打开应用白屏问题

白屏的原因是系统本身启动是需要时间的(背景默认就是白色)。

一般做法:

设置Theme

针对具体的activity:如果一个activity中既要显示全屏的启动图,也要等到内容加载完毕后显示最新内容(非全屏),那么就应该对相关方法的进行判断设置:

private void setFullScreenEnable(boolean isEnable) {

if (isEnable) {

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //隐藏状态栏

} else {

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //显示状态栏

}

}

如果在含有Webview的页面中,则可以分别在onCreate方法和onpageFinished的回调中进行设置即可。

特殊情况:如果整个页面是加载的H5,即便使用了上面的设置,还是会有白屏一闪而过的情景。这是H5页面本身渲染导致的,那么目前的处理方法是针对启动页做个延时dismiss的效果,这样就遮盖了白屏一闪而过的瞬间:

fullLoadingView.postDelayed(new Runnable() {//需要做下延迟,否则会出现页面一瞬间白屏的情况(应该是页面渲染H5的原因)

@Override

public void run() {

fullLoadingView.setVisibility(View.GONE);

setFullScreenEnable(false);

}

}, 300);

16.打开外部应用时,多个页面被调起

B应用打开A应用的cActivity时,A应用的其它Activity也会被打开(之前存在的,A应用一直在后台)

这是taskAffinity的缘故,因为共用了同一个任务栈,所以在manifest文件中设置另外一个任务栈即可:

android:taskAffinity=".payAct"

17.获取webview的bitmap

根据得到网页的高度来设置webview的高度。同时h5做好适配,等比缩放宽高。与此同时可能出现,获取bitmap信息有空白的ui内容,这时候要做延迟获取,因为onPageFinished方法只是拉取了代码,并不表示页面渲染完毕。

webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

设置为NARROW_COLUMNS时,如果webview本身不是全屏的,则分享出去的图片则不能铺满全屏。

18.Error inflating class ImageView

Xml肯定没写错,但是为啥高版本可以,低版本就报错呢?

这是因为图片资源文件被放到了低版本文件夹中去了,所以高版本inflate不到。

19.EditText digits属性

android:digits=“0123456789”

常用来限定EditText的输入格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值