Android開發(fā)問題匯總(一直在更新)

1.如何進入頁面不focus任何view?
設置父布局
    android:focusable="true" 
    android:focusableInTouchMode="true"
2.為何添加了測試庫,但扔import不到?
testCompile
androidTestCompile
在
buildTypes {
    debuggable true
}
才生效
3.canvas.drawText垂直居中
參數(shù)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 時 未執(zhí)行并生成索引文件
@SupportedAnnotationTypes("org.greenrobot.eventbus.Subscribe")
@SupportedOptions(value = {"eventBusIndex", "verbose"})
public class EventBusAnnotationProcessor extends AbstractProcessor {
……
}

只有包含getSupportedAnnotationTypes類型的項目才會執(zhí)行AnnotationProcessor白筹,當前l(fā)ibrary并沒有使用@org.greenrobot.eventbus.Subscribe注解

9.個別機型點擊通知欄通知無法跳轉(zhuǎn)到APP

在設置中開啟權(quán)限

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的區(qū)別徒河?

readline的時候系馆,只有接收到換行符才能收到數(shù)據(jù)。

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簽名信息,執(zhí)行后會提示“輸入密鑰庫口令”
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中根據(jù)系統(tǒng)版本設置

@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加載網(wǎng)頁空白頁面,提示Uncaught SyntaxError: Unexpected xxxx
#不支持高級語法#
//不要用ajax
//不要使用 let
//箭頭函數(shù)
//等等
19.如何手動下載并引入庫
//
#生成目錄名稱
shasum {filePath}
#使用上一步生成的名稱name
.gradle/caches/modules-2/files-2.1/package-name/{項目名}/{版本}/{name}/xxxx.pom

手動下載并引入庫-目錄結(jié)構(gòu)-pom

手動下載并引入庫-目錄結(jié)構(gòu)-aar

參考 http://www.reibang.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+獲取不到藍牙信息
需添加權(quán)限ACCESS_FINE_LOCATION
25.查看當前頁面路徑
adb shell dumpsys activity | grep mFocusedActivity
26.解決RecyclerView中多個EditText無法長按復制粘貼的問題
//1.只看結(jié)果 >> pengboboer https://blog.csdn.net/pengbo6665631/article/details/97794784
//重寫adapter的此方法抢野,然后調(diào)用viewholder中的edittext的setEanble方法
@Override
    public void onViewAttachedToWindow(SimpleViewHolder<PostPublishItem> holder) {
        super.onViewAttachedToWindow(holder);
        holder.editText.setEnable(false);
        holder.editText.setEnable(true);
    }
//2.分析原因 >> http://www.reibang.com/p/e334134a4ef7
prepareCursorControllers方法設置了mInsertionControllerEnabled
27.舊項目編譯問題

通常是gradle版本問題
可以到 https://gradle.org/releases/ 下載對應版本
放到 問題13的目錄里

28.日期格式化問題

Android 6.0(23)及以下系統(tǒng)
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參數(shù),替換為自定義的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.關閉通知權(quán)限無法顯示toast

Toast.show()方法內(nèi)部調(diào)用了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方法中判斷了開起了通知權(quán)限才會繼續(xù)執(zhí)行顯示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方法出現(xiàn)了無限循環(huán)小數(shù)
data1.divide(data2, n, BigDecimal.ROUND_UP)指定n位小數(shù)并 指定roundingMode

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叉跛,隨后出現(xiàn)的幾起案子松忍,更是在濱河造成了極大的恐慌,老刑警劉巖筷厘,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸣峭,死亡現(xiàn)場離奇詭異,居然都是意外死亡酥艳,警方通過查閱死者的電腦和手機摊溶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來充石,“玉大人更扁,你說我怎么就攤上這事『斩” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵溃列,是天一觀的道長劲厌。 經(jīng)常有香客問我,道長听隐,這世上最難降的妖魔是什么补鼻? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮雅任,結(jié)果婚禮上风范,老公的妹妹穿的比我還像新娘。我一直安慰自己沪么,他們只是感情好硼婿,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禽车,像睡著了一般寇漫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殉摔,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天州胳,我揣著相機與錄音,去河邊找鬼逸月。 笑死栓撞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的碗硬。 我是一名探鬼主播瓤湘,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼瓢颅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岭粤?” 一聲冷哼從身側(cè)響起惜索,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剃浇,沒想到半個月后巾兆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡虎囚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年角塑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淘讥。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡圃伶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒲列,到底是詐尸還是另有隱情窒朋,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布蝗岖,位于F島的核電站侥猩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抵赢。R本人自食惡果不足惜欺劳,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铅鲤。 院中可真熱鬧划提,春花似錦、人聲如沸邢享。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驼仪。三九已至掸犬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绪爸,已是汗流浹背湾碎。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奠货,地道東北人介褥。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柔滔。 傳聞我的和親對象是個殘疾皇子溢陪,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容