<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      系統中沒有郵件客戶端設置autoLink=email會掛掉的問題

        TextView的autoLink屬性為我們提供了很大的便利性,當文本中有網址,郵箱或電話的時候可以讓我們方便地執行打電話發郵件等動作,不過也有一些問題,比如說設置autoLink包含email屬性,當文本中有郵件地址時只要點擊就可以調用郵件客戶端來發郵件,但是如果當前系統中沒有郵件客戶端可供調用,程序會直接掛掉。

        通過看Log可以發現,系統拋出了ActivityNotFoundException異常,并且Exception的getMessage中包含"mailto:xxxx@xxx.xxx"字樣,當時第一反應是設置Thread.uncaughtExceptionHandler,判斷如果異常的類型是ActivityNotFoundException并且Error Message中有"mailto"字樣直接讓uncaughtException函數返回,試了一下,程序確實沒掛掉,竊喜中,但是接下來點擊了一下屏幕,5秒鐘后ANR了,好吧這個方法不行。

        又想到當點擊鏈接后會調用郵件客戶端發郵件,肯定有startActivity的調用,于是重載Activity的startActivity函數,把參數 intent的內容打出來(直接toString()就行了),發現在Intent的內容是ACTIVION_VIEW,并有extra data:mailto:xxxx@xxx.xxx,所以就通過intent包含的信息判斷如果包含mailto字樣就認為是系統調用郵件客戶端發郵件,此時判斷系統中是否有郵件客戶端可處理這個請求,如果沒有就把這個startActivity事件攔截下來。

      @Override
      public void startActivity(Intent intent) {
          if (intent.toString().indexOf("mailto") != -1) { // Any way to judge that this is to sead an email
              PackageManager pm = getPackageManager();
              // The first Method
              List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
              if (activities == null || activities.size() == 0) {
                  // Do anything you like, or just return
                  return;
              }
       
              // Another method
              // ResolveInfo resolveInfo = pm.resolveActivity(intent, 0);
              // if (resolveInfo == null)
       
              // Yet another metod
              // Intent.createChooser(intent, "Choose email client");
          }
          super.startActivity(intent);
      }

        代碼就是上面這樣,很簡單,提到了三種方法,第一種和第二種都是通過PackageManager判斷是否有可以處理這個Intent的請求的組件,如果沒有就直接讓startActivity返回,在返回之前你想干嘛干嘛,第三種方法是通過 Intent.createChoose手動彈出一個選擇器,這個方法記得以前用是不行的,這次試了下竟然可以,難道是我記錯了?反正用前兩種方法就好了。

        不只是郵件,如果你想通過以下代碼跳轉到應用市場讓用戶為你的應用評分

      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setData(Uri.parse("market://details?id=" + getPackageName()));
      startActivity(intent);

        如果用戶系統中沒有安裝任何應用市場,很不幸,你的程序一樣會掛掉,和前面說的email一樣的問題:ActivityNotFoundException,不知道Google為什么不處理一下,也許人家以為手機上怎么可能沒有郵件客戶端和應用市場,不了解中國國情啊,不知道如果沒有電話應用會是什么樣?沒有應用市場的處理是一樣的方法,重載startActivity,只要你能判斷這個請求是跳往市場的就行了。不過這個已經有了Intent對象,直接判斷就行了,判斷到沒有市場直接不startActivity。

      posted @ 2013-12-22 12:12  AngelDevil  閱讀(2172)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 国产成人啪精品视频免费软件| 给我播放片在线观看| 亚洲中文欧美在线视频| 日韩精品一区二区在线视| 日韩在线观看精品亚洲| 久久99久国产精品66| 久久久久久久久毛片精品| 亚洲综合一区国产精品| 国产欧美日韩综合精品一区二区 | 日韩a∨精品日韩在线观看| 老师扒下内裤让我爽了一夜| 在线观看的网站| 日韩av一区二区不卡在线| 国产不卡av一区二区| 欧美成人片一区二区三区| 无套内谢少妇一二三四| 99久久国产成人免费网站| 海城市| 国产成人亚洲综合91精品| 欧美牲交a欧美牲交aⅴ图片 | 马公市| 国产成人剧情AV麻豆果冻| 婷婷综合久久中文字幕| 精品一卡2卡三卡4卡乱码精品视频| 狠狠色噜噜狠狠狠888米奇视频| 在线 国产 欧美 专区| 一区二区中文字幕久久| 亚洲成亚洲成网| 中文字幕亚洲无线码一区女同| 亚洲av成人无码精品电影在线| 亚洲中文字字幕精品乱码| 毛片一区二区在线看| 亚洲旡码欧美大片| 欧美牲交a免费| 国内精品九九久久久精品| 亚洲高潮喷水无码AV电影| 中文字幕人妻精品在线| 精品无码人妻| 人妻系列无码专区免费| 国产又黄又硬又粗| 亚洲日韩中文字幕在线播放|