java - 如何使静态图像不可共享android

标签 java android image conditional-statements share

我有一个共享按钮方法,当我在应用程序启动时单击它时,它会要求共享我的 activity_main 上显示的第一张图像,但我不想共享该图像。

当用户用相机拍照时,它会覆盖第一张图像,然后我才想分享该照片。

换句话说,我需要某种条件。我缺少什么?

activity_main

 <ImageView
        android:id="@+id/scanned_image"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:scaleType="center"
        app:srcCompat="@drawable/ic_camera_alt_black_24dp" />

主要 Activity

 public boolean onOptionsItemSelected(MenuItem item) {
     int id = item.getItemId();
     if (id == R.id.action_share) {
Drawable myDrawable = scannedImageView.getDrawable();
         if(myDrawable == null) {
             Toast.makeText(MainActivity.this, "Load Image First...", Toast.LENGTH_SHORT).show();

         } else {
             Bitmap bitmap = ((BitmapDrawable) myDrawable).getBitmap();
             try {
                 Uri file;
                 File file2 = new File(getExternalCacheDir(), "myImage.png");
                 FileOutputStream fOut = new FileOutputStream(file2);
                 bitmap.compress(Bitmap.CompressFormat.PNG, 80, fOut);
                 fOut.flush();
                 fOut.close();
                 file2.setReadable(true, false);
                 Intent intentx = new Intent("android.intent.action.SEND");
                 intentx.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 if (Build.VERSION.SDK_INT < 21) {
                     file = Uri.fromFile(file2);
                 } else {
                     StringBuilder sb = new StringBuilder();
                     sb.append(getPackageName());
                     sb.append(".provider");
                     file = FileProvider.getUriForFile(this, sb.toString(), file2);
                 }
                 Intent intx = Intent.createChooser(intentx, "Share Image");
                 for (ResolveInfo resolveInfo : getPackageManager().queryIntentActivities(intx, PackageManager.GET_META_DATA)) {
                     grantUriPermission(resolveInfo.activityInfo.packageName, file, FLAG_GRANT_READ_URI_PERMISSION);
                 }
                 intentx.putExtra("android.intent.extra.STREAM", file);
                 intentx.setType("image/png");
                 startActivity(intx);
             } catch (FileNotFoundException e) {
                 e.printStackTrace();
                 Toast.makeText(MainActivity.this, "File not found", Toast.LENGTH_SHORT).show();
             } catch (Exception e2) {
                 e2.printStackTrace();
             }
         }
}
return super.onOptionsItemSelected(item);
}

最佳答案

1) 删除此行 app:srcCompat="@drawable/ic_camera_alt_black_24dp" 或不要从 ImageView 中获取可绘制对象,最好的方法是使用拍摄的图像创建新字段 2) 开始 Intent 最后{}

关于java - 如何使静态图像不可共享android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806300/

相关文章:

java - API 23 本地位置不可用

java - 无法删除 spring-hibernate 中的实体

java - Quarkus Main 方法可以在依赖项中定义吗?

java - 是否可以创建自定义 ImageView ?

android - 根据位置执行操作

android - 在 Listview 第一行中下载的图像在正确显示 android 之前随机播放所有图像

java - 为特定的 MIDI 设备开发软件

android - ArrayAdapter 与 admob adview ListView 崩溃

image - MATLAB:在黑白图像上画一条线

c# - 来自 Windows 窗体应用程序中 URI 的图像