android编程中的保存按钮

Posted

技术标签:

【中文标题】android编程中的保存按钮【英文标题】:save button in android programing 【发布时间】:2015-02-25 15:51:43 【问题描述】:

嘿,伙计们,我正在开发一个 android 项目,我想在我的应用程序中添加一个按钮,当用户单击它时,它将图像保存到 sdcard 并显示 toast “图像保存在 sdcard 中” 请帮帮我

【问题讨论】:

@ShifarShifz 来自 drawable 的图像 答案更新为新功能 *保存成功后显示通知";感谢@VasyaFromRussia 的想法 【参考方案1】:
Button bSave = (Button) findViewById(R.id.bSave);
bSave.setOnClickListener(new View.OnClickListener()
          saveImage(true);
          Toast.makeText(getApplicationContext(),"Image Saved",0).show();
);

还有 saveImage();

public void saveImage(boolean isNotifyAfterSave)
    Bitmap bm = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher);
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString();

    File file = new File(extStorageDirectory, "ic_launcher.PNG");
    outStream = new FileOutputStream(file);
    bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
    outStream.flush(); 
    outStream.close(); 

    //if isNotifyAfterSave = true, then it will show an NotificationAlert.
    if(isNotifyAfterSave)
        Uri uriOfFile = Uri.fromFile(file);
        showNotification("Image Saved","desc:ic_launcher.png","IMAGE SAVED!",uriOfFile);
    



public void showNotification(String title, String text, String ticker,Uri pathToImage) 

    NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(
            context);

    Intent intent = new Intent(Intent.ACTION_VIEW, pathToImage);
    intent.setDataAndType(pathToImage, "image/*");

    PendingIntent pIntent = PendingIntent.getActivity(
            context.getApplicationContext(), 0, intent,
            PendingIntent.FLAG_ONE_SHOT);

    nBuilder.setContentText(text);
    nBuilder.setContentTitle(title);
    nBuilder.setContentIntent(pIntent);
    nBuilder.setTicker(ticker);
    nBuilder.setAutoCancel(true);
    nBuilder.setDefaults(Notification.DEFAULT_ALL);
    nBuilder.setSmallIcon(R.drawable.ic_stat_notify);
    nBuilder.setLargeIcon(BitmapFactory.decodeResource(
            context.getResources(), R.drawable.ic_launcher));

    mNotificationManager.notify(0, nBuilder.build());

别忘了添加 android.permission.WRITE_EXTERNAL_STORAGE 权限

参考:堆栈溢出

【讨论】:

不客气,:) ,将答案标记为正确答案,以便人们尽快找到解决方案。【参考方案2】:

除了 Shifar Shifz 的回答。如果你想在保存后在图库中看到你的图像,你应该调用这样的方法:

 private static void addImageToGallery(final Context context, final String filePath) 
    ContentValues values = new ContentValues();

    values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
    values.put(MediaStore.MediaColumns.DATA, filePath);

    context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

否则它可能仅适用于文件管理器,而不适用于图库应用。

【讨论】:

以上是关于android编程中的保存按钮的主要内容,如果未能解决你的问题,请参考以下文章

android RelativeLayout以编程方式更改高度

Android编程:控制器类中的按钮侦听器异常

以编程方式隐藏 Android 应用程序中的主页和最近按钮

如何为以编程方式存储在变量中的按钮添加 android 可绘制文件的值?

Android:如何在 Java 中以编程方式选中/取消选中 RadioGroup 中的单选按钮

以编程方式在android中的软输入键盘上禁用语音到文本按钮(麦克风)