长按二维码图片进行相应操作
来源:互联网 发布:fcc 网络中立 编辑:程序博客网 时间:2024/05/18 05:03
由于近期项目需要,在关于页面有一张二维码图,长按码图跳转微信页面进入公众号以及做相应操作:
但是好像不能直接进入公众号页面只能跳转到微信页面通过微信的扫一扫进入
直接贴代码:
设置监听
mAboutUsBinding.ivGzh.setOnLongClickListener(this);
@Override public boolean onLongClick(View v) { Bitmap obmp = ((BitmapDrawable) (mAboutUsBinding.ivGzh).getDrawable()).getBitmap(); int width = obmp.getWidth(); int height = obmp.getHeight(); int[] data = new int[width * height]; obmp.getPixels(data, 0, width, 0, 0, width, height); RGBLuminanceSource source = new RGBLuminanceSource(width, height, data); BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); QRCodeReader reader = new QRCodeReader(); Result re = null; try { re = reader.decode(bitmap1); } catch (NotFoundException e) { e.printStackTrace(); } catch (ChecksumException e) { e.printStackTrace(); } catch (FormatException e) { e.printStackTrace(); } if (re == null) { showAlert(obmp); } else { showSelectAlert(obmp, re.getText()); } Log.e(TAG, "onLongClick: "+ re.getText()); return false; }
/** * 显示Dialog * param v */ private void showAlert(final Bitmap bitmap) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("保存图片") .setCancelable(false) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { if (mImageUrl==null){ mImageUrl = BitmapUtil.saveBitmap(AboutUsActivity.this, bitmap); ToastUtils.show("保存成功"); }else { ToastUtils.show("图片已在本地存在"); } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { } }); builder.show(); } /** * 显示Dialog * param v */ private void showSelectAlert(final Bitmap bitmap, final String url) { String[] items = {"识别二维码", "保存到手机", "发送给朋友"}; ArrayAdapter arrayAdapter = new ArrayAdapter<String>(AboutUsActivity.this, android.R.layout.simple_list_item_1, items); final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.show(); Window window = alertDialog.getWindow(); window.setContentView(R.layout.list); ListView listItem = window.findViewById(R.id.list_item); //此处设置位置窗体大小 WindowManager m = getWindowManager(); Display d = m.getDefaultDisplay(); //为获取屏幕宽、高 WindowManager.LayoutParams p = window.getAttributes(); //获取对话框当前的参数值 p.height = (int) (d.getHeight() * 0.3); //高度设置为屏幕的0.3 p.width = (int) (d.getWidth() * 0.4); //宽度设置为屏幕的0.5 window.setAttributes(p); //设置生效 listItem.setAdapter(arrayAdapter); listItem.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { // 获取到图片地址后做相应的处理 case 0://识别二维码 try { //利用Intent直接打开微信 Uri uri = Uri.parse(url); Intent intent = getPackageManager().getLaunchIntentForPackage("com.tencent.mm"); intent.setData(uri); startActivity(intent); } catch (Exception e) { //若无法正常跳转,在此进行错误处理 Toast.makeText(AboutUsActivity.this, "无法跳转到微信,请检查您是否安装了微信!", Toast.LENGTH_SHORT).show(); } alertDialog.dismiss(); break; case 1://保存到手机 if (mImageUrl==null){ mImageUrl = BitmapUtil.saveBitmap(AboutUsActivity.this, bitmap); ToastUtils.show("保存成功"); }else { ToastUtils.show("图片已在本地存在"); } alertDialog.dismiss(); break; case 2://发送给朋友 if (mImageUrl==null){ mImageUrl = BitmapUtil.saveBitmap(AboutUsActivity.this, bitmap); } sendToFriends(mImageUrl); alertDialog.dismiss(); break; } } }); } /** * 发送给好友 * @param imageUrl */ private void sendToFriends(String imageUrl) { Intent intent = new Intent(Intent.ACTION_SEND); Uri imageUri = Uri.parse(imageUrl); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, imageUri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(Intent.createChooser(intent, getTitle())); }保存图片到本地相册
private static final String SD_PATH = "/sdcard/dskqxt/pic/"; private static final String IN_PATH = "/dskqxt/pic/"; /** * 随机生产文件名 * * @return */ private static String generateFileName() { return UUID.randomUUID().toString(); } /** * 保存bitmap到本地,并更新相册 * * @param context * @param mBitmap * @return */ public static String saveBitmap(Context context, Bitmap mBitmap) { String savePath; File filePic; String fileName; if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { savePath = SD_PATH; } else { savePath = context.getApplicationContext().getFilesDir() .getAbsolutePath() + IN_PATH; } fileName = savePath + generateFileName() + ".jpg"; try { filePic = new File(fileName); if (!filePic.exists()) { filePic.getParentFile().mkdirs(); filePic.createNewFile(); } FileOutputStream fos = new FileOutputStream(filePic); mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); return null; } //告诉系统,有一张图片,这样在分享到其他应用的时候,从系统中获取资源的时候获取图片了 String url = ""; try { url = MediaStore.Images.Media.insertImage(context.getContentResolver(), filePic.getAbsolutePath(), fileName + System.currentTimeMillis(), "gzh"); } catch (FileNotFoundException e) { e.printStackTrace(); } // 最后通知图库更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path))); return url; }
阅读全文
0 0
- 长按二维码图片进行相应操作
- iOS 扫描二维码、长按图片识别二维码
- zxing二维码生成扫描,识别二维码图片,长按识别二维码调用方便简洁
- ios APPweb网页长按识别二维码和保存图片
- MUI长按图片进行下载
- 长按二维码识别
- iOS生成二维码(中间包含图片),长按识别二维码(Swift)
- 生成二维码,长按识别二维码
- iOS中加载HTML数据,并点击图片或链接进行相应的操作
- iOS中加载HTML数据,并点击图片或链接进行相应的操作
- android webview长按识别图片 ,利用zxing识别图片是否是二维码
- 根据ios或者安卓扫描二维码进行相应下载
- 长按二维码不识别
- iOS之长按识别二维码/生成二维码/扫描二维码
- 微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
- android webView使用js/css实现夜间模式 长按识别图片以及二维码,网页可以上传图片
- 自定义 UIWebview 添加长按保存图片等操作
- 自定义 UIWebview 添加长按保存图片等操作
- git 命令--上传代码 && Window系统下搭建GIT本地服务器
- 自动化运维工具ansible的安装与使用
- foreach的continue和break : Uncaught SyntaxError: Illegal continue statement
- pygame库写游戏——入门<5>——游戏中的视觉
- android适配器,子布局不能撑满父容器
- 长按二维码图片进行相应操作
- Vue.js组件传参案例
- C# 里氏转换(父类转换成子类)( is as )
- No transaction is currently active问题
- 信贷分控的九个维度
- Tomcat部署的方式
- MATLAB中mean的用法
- 从零开始写聊天机器人
- Git安装配置