这是我的示例代码,它将来自库选择的图像保存到/data/data/com.isummation.customgallery/files/应用程序内存中。 但我想将文件路径更改为/data/data/com.isummation.customgallery/files/photos 我需要做什么? 我如何更改它?

package com.isummation.customgallery;


import com.database.DataBase;

public class AndroidCustomGalleryActivity extends Activity {

private int count;
private Bitmap[] thumbnails;
private boolean[] thumbnailsselection;
private String[] arrPath;
private ImageAdapter imageAdapter;

Cursor imagecursor;

int image_column_index;

Button selectBtn;

ProgressDialog myProgressDialog = null;

DataBase db;
        public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gallery);

    showProgress();
    new Thread() {
        public void run() { 
             try
            {
                loadFeed();
                android.os.Message alertMessage = new android.os.Message();
                alertMessage.what = 1;
                handle.sendMessage(alertMessage);
            }
            catch(Exception e)
            {   
                android.os.Message alertMessage = new android.os.Message();
                alertMessage.what = 2;
                handle.sendMessage(alertMessage);       
            }
        }
     }.start();


    selectBtn = (Button) findViewById(R.id.selectBtn);
    selectBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub

            showProgress();
            new Thread() {
                public void run() { 
                     try
                    {
                        SelecedtPhotos();
                        android.os.Message alertMessage = new  
           android.os.Message();
                        alertMessage.what = 3;
                        handle.sendMessage(alertMessage);
                    }
                    catch(Exception e)
                    {   
                        android.os.Message alertMessage = new  
       android.os.Message();
                        alertMessage.what = 2;
                        handle.sendMessage(alertMessage);       
                    }
                }
            }.start();


        }
    });

}

public static byte[] getBitmapAsByteArray(Bitmap bitmap) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, outputStream);       
    return outputStream.toByteArray();
}

public class ImageAdapter extends BaseAdapter {

    private LayoutInflater mInflater;

    public ImageAdapter() {
        mInflater = (LayoutInflater)  
          getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return count;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;

        if (convertView == null) {

            holder = new ViewHolder();
            convertView = mInflater.inflate(R.layout.galleryitem,   
   null);
            holder.imageview = (ImageView)   
  convertView.findViewById(R.id.thumbImage);
            holder.checkbox = (CheckBox)  
  convertView.findViewById(R.id.itemCheckBox);

            convertView.setTag(holder);
        }
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.checkbox.setId(position);
        holder.imageview.setId(position);

        holder.checkbox.setOnClickListener(new OnClickListener()  
       {            
            public void onClick(View v) {
                // TODO Auto-generated method stub
                CheckBox cb = (CheckBox) v;
                int id = cb.getId();

                if (thumbnailsselection[id])
                {
                    cb.setChecked(false);
                    thumbnailsselection[id] = false;
                } 
                else 
                {
                    cb.setChecked(true);
                    thumbnailsselection[id] = true;
                }
            }
        });

        /*holder.imageview.setOnClickListener(new OnClickListener()  
      {         
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int id = v.getId();
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.parse("file://" +  
          arrPath[id]), "image/*");
                startActivity(intent);
            }
        });*/

        holder.imageview.setImageBitmap(thumbnails[position]);
        holder.checkbox.setChecked(thumbnailsselection[position]);
        holder.id = position;

        return convertView;
    }
}
class ViewHolder {
    ImageView imageview;
    CheckBox checkbox;
    int id;
}

public void loadFeed()
{
    final String[] columns = { MediaStore.Images.Media.DATA,  
       MediaStore.Images.Media._ID };
    final String orderBy = MediaStore.Images.Media._ID;

    imagecursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,  
         columns, null,null, orderBy);

    image_column_index =  
       imagecursor.getColumnIndex(MediaStore.Images.Media._ID);

    this.count = imagecursor.getCount();

    this.thumbnails = new Bitmap[this.count];

    this.arrPath = new String[this.count];

    this.thumbnailsselection = new boolean[this.count];

    for (int i = 0; i < this.count; i++) 
    {
        imagecursor.moveToPosition(i);
        int id = imagecursor.getInt(image_column_index);
        int dataColumnIndex =  
     imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
        thumbnails[i] =  

    MediaStore.Images.Thumbnails.getThumbnail
   (getApplicationContext().getContentResolver(),  
   id,MediaStore.Images.Thumbnails.MICRO_KIND, null);
        arrPath[i]= imagecursor.getString(dataColumnIndex);
    }

    imagecursor.close();
  }

 private void showProgress()
    {
        myProgressDialog =   
 ProgressDialog.show(AndroidCustomGalleryActivity.this,null,
 "Loading Data...", true); 
    }

    private void hideProgress()
    {
        if (myProgressDialog != null)
            myProgressDialog.dismiss();
    }

   ///////////////////// Get File Name from path ////////////////////////////
public String FileName(String path)
{
    String f = " /";
    boolean c = false;

    for(int i=path.length()-1;i>0;i--)
    {
        if(c == false)
            if(path.charAt(i) == f.charAt(1))
            {
                c = true;
                return  
  path.substring(i+1,path.length());        
            }
    }

    return "";
}

///////////////////// Get Extension from path ////////////////////////////
   public String fileExt(String audio)
    {
    String fileName = "";
    String f = " .";
    boolean c = false;

    for(int i=audio.length()-1;i>0;i--)
    {
        if(c == false)

            if(audio.charAt(i) == f.charAt(1))
            {
                fileName = audio.substring(i+1,audio.length());
                c = true;
            }
    }

    return fileName;
  }

  public void SelecedtPhotos()
  {

    final int len = thumbnailsselection.length;
//  int cnt = 0;

    for (int i =0; i<len; i++)
    {
        if (thumbnailsselection[i])
        {
            //cnt++;

            BitmapFactory.Options options = new  
   BitmapFactory.Options();
            options.inSampleSize = 8; 
            options.inPreferredConfig = Bitmap.Config.ARGB_8888;

            Bitmap bitmap = BitmapFactory.decodeFile(arrPath[i],  
   options);


            try {






                FileOutputStream outputStream =  
   openFileOutput(FileName(arrPath[i]), Context.MODE_PRIVATE);
                outputStream.write(getBitmapAsByteArray(bitmap));
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            db = new DataBase(getBaseContext()); 
            try {
                db.createDataBase();
            } catch (IOException e1) {
                e1.printStackTrace();
            }

            db.insert_update("INSERT INTO Photos(name,ext,path) 
  VALUES  ('"+FileName(arrPath[i])+"','"+fileExt(arrPath[i])+"','"+arrPath[i]+"')");

            db.close();

            File file = new File(arrPath[i]);
            boolean t = file.delete();

        }
    }

===============>>#1 票数:0 已采纳

代替:

FileOutputStream outputStream = openFileOutput(FileName(arrPath[i]), Context.MODE_PRIVATE);

您将需要执行以下操作:

File photos=new File(getFilesDir(), "photos");
photos.mkdirs();
FileOutputStream outputStream=new FileOutputStream(new File(photos, FileName(arrPath[i])));

  ask by Hayya Anam translate from so

未解决问题?本站智能推荐:

1回复

如何检测默认拨号程序应用程序更改?

语境 我正在实施RCC ,如GSMA在本规范中所见,我需要能够检测默认的拨号程序更改。 根据规范B.1.1节: 在要收到默认SMS应用程序更改和默认拨号程序更改通知的Android™OS 7.0或更高版本中,(...),RCS客户端应侦听Android™Intent的广播:
2回复

如何更改Qt Android应用程序的默认应用程序图像

我使用QT / Qml c ++制作了一个android应用,可以在android设备上运行它。 我想更改项目的默认应用程序映像。 我没有办法做到这一点。 请帮忙。
1回复

Android:默认应用程序的设置存储在哪里?

我在扎根的Samsung Galaxy Note 3上运行Android 4.4.2,但遇到一个让我发疯的问题:默认拨号器/电话应用程序从未保存。 所以我的问题是:默认应用程序设置保存在哪里? 也许使用XML或SQLITE? 我问是因为我想尝试自己手动编写设置。 或者,您是否对如何解
2回复

在Android 4.4.2上更改SMS应用程序默认值

我会更改Android 4.4.2上的默认短信应用程序 我用这个代码: 我怎么解决这个问题? 我怎么能要求用我的应用程序更改默认的短信应用程序? 我的接收者: 谢谢。
2回复

在应用程序加载时更改默认xml图像

我有一个android应用程序,默认情况下使用xml显示一系列ImageButton。 用户根据他们的输入来改变图像。 我试图在用户下次加载应用程序时显示更改的ImageButtons。 示例:ImageButton从Android.png开始(从默认xml页面加载)用户输入文本Ima
2回复

如何更改打开应用程序的默认方式

我在android上写了一个有关NFC的应用程序,但是我有一个问题。 当我将NFC标签放在靠近手机的地方时,将出现一个对话框,让我选择要从NFC标签读取信息的应用程序。 但是我不希望该对话框只是希望当NFC标签靠近手机时,我编写的应用程序会自动打开。 我试图将代码修改为:
1回复

更改默认系统应用程序图标

我遇到了一个名为Nova Launcher的启动器应用程序,它提供了将系统应用程序的外观和感觉更改为另一个图标包的选项,下面是nova启动器的屏幕截图。 当我选择stock jellybean时,它会将系统应用程序图标替换为jellbean图标包。 我想在我自己的启动器应用程序中实
1回复

如何更改Android中的默认应用程序图像?

如何在android中更改默认的应用程序映像?我们想将我们的应用程序与其他android application.so区分,所以我想将默认的android应用程序映像更改为单独的映像。 怎么办?有人请帮我吗?
3回复

根据设备的默认语言更改应用程序的语言

我想根据安装应用程序的设备的默认语言更改我的应用程序的语言。 例如:如果设备的默认语言是法语,则用户将使用法语应用程序。 我试图寻找解决方案,但可能我不明白该怎么做。 有人可以帮帮我吗? 每一个帮助都将受到高度赞赏。
1回复

更改应用程序的名称而不触摸默认活动

我有一个Android应用程序,它具有在AndroidManifest.xml定义的默认活动: 如果默认活动有属性android:label ,似乎android:label="NameOfMyApp"将被覆盖。 所以我想将应用程序的名称更改为Login , NameOfMyApp