Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我试图实现一个imageViewer类来查看、下载和共享图像,使用下面的代码,但它的行为不正常_Java_Android_Download_Picasso - Fatal编程技术网

Java 我试图实现一个imageViewer类来查看、下载和共享图像,使用下面的代码,但它的行为不正常

Java 我试图实现一个imageViewer类来查看、下载和共享图像,使用下面的代码,但它的行为不正常,java,android,download,picasso,Java,Android,Download,Picasso,fab1按钮用于下载图像,fab2按钮用于共享图像。但按下fab1时会显示一个祝酒词,但文件不会被下载(gallary中未显示),当按下fab2共享按钮时,会打开一个提示,提供不同的应用程序来共享图像。 无论我是否将图像进一步共享到任何应用程序(它可以工作)或取消,图像都会下载 可能我在代码安排上有问题,但找不到。救命啊 package com.ashishapps.android.diwaliwallpapaersclient; import android.Manifest;

fab1按钮用于下载图像,fab2按钮用于共享图像。但按下fab1时会显示一个祝酒词,但文件不会被下载(gallary中未显示),当按下fab2共享按钮时,会打开一个提示,提供不同的应用程序来共享图像。 无论我是否将图像进一步共享到任何应用程序(它可以工作)或取消,图像都会下载

可能我在代码安排上有问题,但找不到。救命啊

package com.ashishapps.android.diwaliwallpapaersclient;

     import android.Manifest;
     import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;

import com.squareup.picasso.Picasso;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


public class ImageViewer extends AppCompatActivity {
String extracteurl;
ImageView imageView;
FloatingActionButton fab1, fab2;
    private static final int PERMISSION_REQUEST_CODE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image_viewer);
    extracteurl = getIntent().getExtras().getString("URL");
    imageView = findViewById(R.id.imageviewer);

    Picasso.get().load(extracteurl).into(imageView);
    fab1 = findViewById(R.id.fab1);
    fab1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //asking for permission

            //////Download File

            SaveImage(ImageViewer.this, extracteurl);
        }
    });


    fab2 = findViewById(R.id.fab2);

    fab2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            readpermission();
            BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable());
            Bitmap bitmap = bitmapDrawable.getBitmap();
            String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "Shared from WallpaperApp by AshishApps", null);
            Uri bitmapUri = Uri.parse(bitmapPath);
            Intent shareIntent = new Intent(Intent.ACTION_SEND);
            //sharing only to whatsapp
            // shareIntent.setPackage("com.whatsapp");
            shareIntent.setType("*/*");// shareIntent.setType("image/jpeg");
            shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
            shareIntent.putExtra(Intent.EXTRA_TEXT, "Download " + "https://play.google.com/store/apps/details?id=" + getPackageName());
            //shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            startActivity(Intent.createChooser(shareIntent, "Share Image"));


        }
    });

    MobileAds.initialize(this);


    AdView adView = findViewById(R.id.bannerad);
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);


}

/////////////////////////////saving image
private static void SaveImage(final Context context, final String MyUrl) {
    final ProgressDialog progress = new ProgressDialog(context);
    class SaveThisImage extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progress.setTitle("Processing");
            progress.setMessage("Please Wait...");
            progress.setCancelable(false);
            progress.show();
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            try {

                File sdCard = Environment.getExternalStorageDirectory();
                @SuppressLint("DefaultLocale") String fileName = String.format("%d.jpg", System.currentTimeMillis());
                File dir = new File(sdCard.getAbsolutePath() + "/savedImageName");
                dir.mkdirs();
                final File myImageFile = new File(dir, fileName); // Create image file
                FileOutputStream fos = null;
                try {
                    fos = new FileOutputStream(myImageFile);
                    Bitmap bitmap = Picasso.get().load(MyUrl).get();
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);

                    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    intent.setData(Uri.fromFile(myImageFile));
                    context.sendBroadcast(intent);
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            } catch (Exception e) {
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (progress.isShowing()) {
                progress.dismiss();
            }
            Toast.makeText(context, "Saved", Toast.LENGTH_SHORT).show();
        }
    }
    SaveThisImage shareimg = new SaveThisImage();
    shareimg.execute();
}

//////////////////////////////////////////////////////////////////////////////////


public void readpermission() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkPermission()) {
            // Code for above or equal 23 API Oriented Device
            // Your Permission granted already .Do next code
        } else {
            requestPermission(); // Code for permission
        }
    } else {
        // Code for Below 23 API Oriented Devic// Do next code
    }

}

private boolean checkPermission() {
    int result = ContextCompat.checkSelfPermission(ImageViewer.this, Manifest.permission.READ_EXTERNAL_STORAGE);
    if (result == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}

private void requestPermission() {

    if (ActivityCompat.shouldShowRequestPermissionRationale(ImageViewer.this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
        Toast.makeText(ImageViewer.this, "Write External Storage permission allows us to do store images. Please allow this permission in App Settings.", Toast.LENGTH_LONG).show();
    } else {
        ActivityCompat.requestPermissions(ImageViewer.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case PERMISSION_REQUEST_CODE:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.e("value", "Permission Granted, Now you can use local drive .");
            } else {
                Log.e("value", "Permission Denied, You cannot use local drive .");
            }
            break;
    }
}
package com.ashishapps.android.diwaliwallpapaersclient;
导入android.Manifest;
导入android.annotation.SuppressLint;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.content.Intent;
导入android.content.pm.PackageManager;
导入android.graphics.Bitmap;
导入android.graphics.drawable.BitmapDrawable;
导入android.net.Uri;
导入android.os.AsyncTask;
导入android.os.Build;
导入android.os.Bundle;
导入android.os.Environment;
导入android.provider.MediaStore;
导入android.support.design.widget.FloatingActionButton;
导入android.support.v4.app.ActivityCompat;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.view;
导入android.widget.ImageView;
导入android.widget.Toast;
导入com.google.android.gms.ads.AdRequest;
导入com.google.android.gms.ads.AdView;
导入com.google.android.gms.ads.MobileAds;
导入com.squareup.picasso.picasso;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
公共类ImageViewer扩展AppCompatActivity{
弦提取器;
图像视图图像视图;
浮动操作按钮fab1、fab2;
私有静态最终int权限\请求\代码=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u image\u查看器);
extracteurl=getIntent().getExtras().getString(“URL”);
imageView=findViewById(R.id.imageviewer);
Picasso.get().load(extracteurl).into(imageView);
fab1=findViewById(R.id.fab1);
fab1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//请求许可
//////下载文件
保存图像(ImageViewer.this,extracteurl);
}
});
fab2=findViewById(R.id.fab2);
fab2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
readpermission();
BitmapDrawable BitmapDrawable=((BitmapDrawable)imageView.getDrawable());
位图位图=bitmapDrawable.getBitmap();
字符串bitmapPath=MediaStore.Images.Media.insertImage(getContentResolver(),位图,“Shapps从WallperApp共享”,null);
Uri bitmapUri=Uri.parse(bitmapPath);
意向共享意向=新意向(意向.行动\发送);
//仅共享给whatsapp
//shareIntent.setPackage(“com.whatsapp”);
shareIntent.setType(“*/*”);//shareIntent.setType(“图像/jpeg”);
shareIntent.putExtra(Intent.EXTRA_流,位图URI);
shareIntent.putExtra(Intent.EXTRA_文本,“下载”+)https://play.google.com/store/apps/details?id=“+getPackageName());
//addFlags(Intent.FLAG\授予\读取\ URI\权限);
startActivity(Intent.createChooser(shareIntent,“共享图像”));
}
});
MobileAds.初始化(此);
AdView AdView=findViewById(R.id.bannerad);
AdRequest AdRequest=新建AdRequest.Builder().build();
adView.loadAd(adRequest);
}
/////////////////////////////保存图像
私有静态void SaveImage(最终上下文,最终字符串MyUrl){
最终进度对话框进度=新进度对话框(上下文);
类SaveThisImage扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
进度。设置标题(“处理”);
progress.setMessage(“请稍候…”);
进度。可设置可取消(false);
progress.show();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
试一试{
文件sdCard=Environment.getExternalStorageDirectory();
@SuppressLint(“DefaultLocale”)字符串文件名=String.format(“%d.jpg”,System.currentTimeMillis());
File dir=新文件(sdCard.getAbsolutePath()+“/savedImageName”);
dir.mkdirs();
最终文件myImageFile=新文件(目录,文件名);//创建图像文件
FileOutputStream=null;
试一试{
fos=新文件输出流(myImageFile);
位图位图=Picasso.get().load(MyUrl.get();
bitmap.compress(bitmap.CompressFormat.JPEG,100,fos);
意图=新意图(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u FILE);
setData(Uri.fromFile(myImageFile));
发送广播(意图);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
fos.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}捕获(例外e){
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
if(progress.isShowing()){
进步。解散();
}
Toast.makeText(上下文“保存”,Toast.LENGTH_SHORT).show();
}
}
SaveThisImage shareimg=新建SaveThisImag