使用系统图片选择页面

      在项目开发中,需要使用系统的图片选择页面来设置用户头像,使用网上的代码,并使用友盟的reportError来记录无法兼容的机型。

private void openSystemAlbum() {
   final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; // 4.4
   Intent intent;
   if (isKitKat) {
      intent = new Intent(
            Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // act=android.intent.action.PICK dat=content://media/external/images/media
      if (!Utils.isIntentAvailable(getActivity(), Intent.ACTION_PICK)) {
         UIUtils.showToast(getActivity(), "很抱歉,当前您的手机不支持相册选择功能,请安装相册软件");
         String model = android.os.Build.MODEL;
         MobclickAgent.reportError(EDUApplication.getInstance(),
               "openSystemAlbum fail model " + model); // "openSystemAlbum fail model SM-G900F" (Samsung Galaxy S5)
         return;
      }
   } else {
      intent = new Intent(Intent.ACTION_GET_CONTENT);
      intent.setType("image/*");
      if (intent.resolveActivity(getActivity().getPackageManager()) == null) {
         UIUtils.showToast(getActivity(), "很抱歉,当前您的手机不支持相册选择功能,请安装相册软件");
         String model = android.os.Build.MODEL;
         MobclickAgent.reportError(EDUApplication.getInstance(),
               "openSystemAlbum fail model " + model);
         return;
      }
   }
   startActivityForResult(intent, PHOTOZOOM); 
}
         在绝大多数手机上,代码正常,但在一些手机上却报出“No Activity found to handle Intent { act=android.intent.action.PICK dat=content://media/external/images/media }”的问题,比如Coolpad 8017 (4.4.2)、A31(4.4.4)、Coolpad 8702D(4.4.3)、F103(5.0.2)等。

           这个异常可以通过try catch来解决。

try {
    activity.startActivityForResult(intent, requestCode);
} catch (Throwable t) {
    UIUtils.showToast(activity, "很抱歉,当前您的手机不支持相册选择功能,请安装相册软件");
    String model = android.os.Build.MODEL;
    MobclickAgent.reportError(EDUApplication.getInstance(),
            "openSystemAlbum throw exception and mobile model is " + model);
}
        后续版本可以针对友盟后台记录手机的model来进行特殊处理,来做到更好的体验。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值