Android AutoSearchBug自動捕獲異常,聯(lián)網(wǎng)查詢異常解決方法

AutoSearchBug

原文連接:http://9aiplay.com/record/AutoSearchBug/
我的Github:https://github.com/SHPDZY
我的博客:http://9aiplay.com/


這是一款可以在項目崩潰時獲取異常
自動聯(lián)網(wǎng)在Stack Overflow,百度或其他平臺上尋找回答鏈接和詳情

原理

android通過UncaughtExceptionHandler來實現(xiàn)獲取應(yīng)用全局的crash信息
啟動一個服務(wù)來完成聯(lián)網(wǎng)查找回答

Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(final Thread thread, final Throwable ex) {
        String errorMsg = getErrorMsg(ex);
        Intent intent = new Intent(mApp, AutoSearchBugService.class);
        intent.putExtra(ERROR_MSG, errorMsg);
        intent.putExtra(MAX_SIZE, maxSize);
        intent.putExtra(SHOW_ANSWER, showAnswer);
        intent.putExtra(SEARCH_TYPE, searchType);
        mApp.startService(intent);
        mUEH.uncaughtException(thread, ex);
    }
};

public class AutoSearchBugService extends Service implements AutoSearchBugGlobal {
    
    ···

    private void search(final String errorMsg, int maxSize, final int showAnswer, int searchType) {
        AutoSearchBugHttpUtil.doGet(
                        AutoSearchBugAPI.SEARCH_URL + 
                        AutoSearchBugAPI.PAGE_SIZE + maxSize +
                        AutoSearchBugAPI.ERROR_MSG + errorMsg.replace(" ", "%20") +
                        AutoSearchBugAPI.SHOW_ANSWER + showAnswer + 
                        AutoSearchBugAPI.SEARCH_TYPE + searchType,
                new AutoSearchBugHttpUtil.HResponse() {
                    @Override
                    public void onStart() {
                        StringBuffer log = new StringBuffer();
                        log.append(LINE_START);
                        log.append(SEARCHING);
                        log.append(LINE_END);
                        log(log);
                    }

                    @Override
                    public void onFinish(String msg) {
                        resolveLog(msg, errorMsg, showAnswer);
                        stopSelf();
                    }

                    @Override
                    public void onError(String error) {
                        StringBuffer log = new StringBuffer();
                        log.append(String.format(ASB_ERROR, error));
                        log.append(LINE_END);
                        log(log);
                        stopSelf();
                    }
                });
    }

···

}

服務(wù)端通過Jsoup來解析html

@RestController
@RequestMapping("/android")
@Api("android接口")
public class SearchBugApi {
    
    ···

    /**
     * 通過errorMsg來查找回答
     * @param page          獲取幾條數(shù)據(jù)
     * @param errorMsg      crash信息
     * @param showAnswer    是否顯示回答詳情
     * @param type          0搜索stackoverflow 1搜索baidu
     * @return
     */
    @GetMapping("autosearchbug")
    public R autosearchbug(int page, String errorMsg, int showAnswer, int type) {
        switch (type) {
            case 0:
                return getStackOverFlow(page, errorMsg, showAnswer);
            case 1:
                return getBD(page, errorMsg);
            default:
                return getStackOverFlow(page, errorMsg, showAnswer);
        }

    }
    
    private R getStackOverFlow(int page, String errorMsg, int showAnswer) {
        String url = "https://stackoverflow.com/search?q=" + errorMsg;
        List<AutoSearchBugEntity> autoSearchBugList = new ArrayList();
        try {
            Document doc = Jsoup.connect(url).get();
            ···
            return R.ok().putData(autoSearchBugList);
        } catch (IOException e) {
            e.printStackTrace();
            return R.error(e.getMessage());
        }
    }


    ···
    
}

如何引入

Android Studio 引入

第1步 將JitPack存儲庫添加到您的構(gòu)建文件

將其添加到存儲庫末尾的根build.gradle中:

   allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

第2步 添加依賴關(guān)系

    dependencies {
           implementation 'com.github.SHPDZY:AutoSearchBug:1.0.1'
    }

Eclipse 引入

建議使用As,方便版本更新。

    dependencies {
           compile project(path: ':AutoSearchBug')
    }

如何使用

    AutoSearchBugControl.getBuilder()
            .setMaxSize(3)    //顯示數(shù)量
            .showAnswer(true) //true顯示回答詳情
            .setSearchType(0) //0在stackoverflow搜索  1:在百度搜索
            .init();

效果圖

默認(rèn)初始化未顯示回答詳情


效果圖

自定義初始化顯示詳情


效果圖

原文連接:http://9aiplay.com/record/AutoSearchBug/
我的Github:https://github.com/SHPDZY
我的博客:http://9aiplay.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,181評論 25 708
  • 太長了,還是轉(zhuǎn)載吧...今天在看博客的時候,無意中發(fā)現(xiàn)了@Trinea在GitHub上的一個項目Android開源...
    龐哈哈哈12138閱讀 20,394評論 3 283
  • 看過這部電影給了我兩點印象:做自己該做的事,做自己真正想做的事。 我?guī)е芏嘁蓡栆粋€人去看完了這部電影,它為什么叫...
    PEAK毛毛閱讀 182評論 0 0
  • 4歲就會彈奏小提琴;童年時代寫出多部名曲;只用一根弦也能彈完一首曲子;瞬間記住幾百個隨機數(shù)字;開平方比計算器還快;...
    豌豆媽育兒閱讀 2,007評論 1 12
  • 作者簡介: 尤瓦爾·赫拉利,1976年生,以色列年輕作家,牛津大學(xué)歷史學(xué)博士,現(xiàn)為耶路撒冷希伯來大學(xué)的歷史系教...
    suern閱讀 818評論 0 0

友情鏈接更多精彩內(nèi)容