導航:首頁 > 操作系統 > android載入相冊

android載入相冊

發布時間:2022-10-03 06:21:35

android開發中怎麼將照片存儲到系統相冊中

java">//創建輸出流,指向SD卡的Pictures文件夾
finalFiledirectory=Environment.(Environment.DIRECTORY_DCIM);
//創建保存的文件
Filefile=newFile(directory,"test.png");
FileOutputStreamout=null;
try{
out=newFileOutputStream(file);

}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{

}
//bitmap就是你的圖片
bitmap.compress(Bitmap.CompressFormat.PNG,100,out);

② android中怎麼調取手機本地相冊

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
// 開啟一個帶有返回值的Activity,請求碼為100
startActivityForResult(intent, 100);

③ android怎樣調用系統相冊

使用系統自帶的圖片瀏覽器應用程序Gallery可以打開一張指定的圖片,//使用IntentIntent intent = new Intent(Intent.ACTION_VIEW);//Uri mUri = Uri.parse("file://" + picFile.getPath());Android3.0以後最好不要通過該方法,存在一些小Bugintent.setDataAndType(Uri.fromFile(picFile), "image/*");startActivity(intent)

④ android中怎麼跳轉到相冊獲取照片並得到url

方法/步驟
1
如下圖所示,需要根據URL地址獲取圖片載入到圖中Anroid機器人所在的位置,這是運行前的效果:

2
首先需根據URL地址獲取圖片,如下所示,urladdr即為圖片地址,返回Drawable對象:
//download image from network using @urladdress
private Drawable loadImageFromNetwork(String urladdr) {
// TODO Auto-generated method stub
Drawable drawable = null;
try{
//judge if has picture locate or not according to filename
drawable = Drawable.createFromStream(new URL(urladdr).openStream(), "image.jpg");
}catch(IOException e){
Log.d("test",e.getMessage());
}
if(drawable == null){
Log.d("test","null drawable");
}else{
Log.d("test","not null drawable");
}
return drawable;
}
3
獲取到圖片後,需要更新主線程UI資源,考慮到時間以及界面反應延遲等,所以採用線程加以處理,如下圖所示:
// image
new Thread(new Runnable(){
Drawable drawable = loadImageFromNetwork(urladdress);
@Override
public void run(){
//post() is quite important,update pictures in UI main thread
image.post(new Runnable(){
@Override
public void run(){
//TODO Auto-generated method stub
image.setImageDrawable(drawable);
}
});
}

//download image from network using @urladdress
private Drawable loadImageFromNetwork(String urladdr) {
//... 略(如 1 中所示)
}
}).start(); //線程啟動
4
說明:在上述示例代碼中,image是ImageView類的一個對象,也就是APP中的一個顯示圖像組件,利用獲取到的圖片drawable去更新image,運行效果如下所示:

⑤ Android 使用系統相機拍照和讀取相冊照片

1.拍照 (對於7.0以上的版本,不在允許直接訪問uri)
`

若不指定輸出路徑intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通過

`
可以拿到uri,但獲得的圖片是被壓縮過的。若指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);輸出路徑,則此處的intent為null,但可以使用我們存的uri讀取照片,此時的照片沒有被壓縮。

2.從相冊中讀取照片, 方法:
`

`
即使設置 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity));輸出路徑,仍然不能從此路徑中讀取,只能在onActivityForResult()中通過event.uri = intent.getData();方式獲得圖片uri。
此種現象也好理解,拍照時產生新的圖片,自然可根據設置的uri進行圖片保存,而讀取相冊時,圖片已經在目錄中不能轉移到自己設定的uri中。

Androidmanifest.xml中
`

在 res/xml/provider_paths.xml
`

<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="JDTobs" path=""/>
<files-path name="name" path="path" />
<cache-path name="name" path="path" /> <external-path name="name" path="path" />
<external-files-path name="name" path="path" />
<external-cache-path name="name" path="path" /> </paths> `

讀取uri

⑥ Android WebView 調用系統拍照和相冊

由於業務需要,APP內嵌H5,需要調去系統相冊和拍照,網上找了點資料,整理一下,供大家參考:

private static final int REQUEST_CAMERA =1;

private static final int REQUEST_CHOOSE =2;

private ValueCallbackmUploadMessage;

private ;

private UricameraUri;

//5.0以後的方法

webView.setWebChromeClient(new WebChromeClient() {

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

@Override

    public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {

if (mUploadMessagesAboveL !=null) {

mUploadMessagesAboveL.onReceiveValue(null);

            mUploadMessagesAboveL =null;

        }else {

mUploadMessagesAboveL = filePathCallback;

            selectImage();

        }

return true;

    }

});

//選擇圖片和拍照,對應的string文件,可以自己寫死:拍照,相冊,取消

private void selectImage() {

ActionSheet.createBuilder(this, getSupportFragmentManager()).

setOtherButtonTitles(new String[]{getResources().getString(R.string.common_tip_photos), getResources().getString(R.string.common_picture)}).

setCancelButtonTitle(getResources().getString(R.string.common_cancel)).setCancelableOnTouchOutside(true).setListener(new ActionSheet.ActionSheetListener() {

public void onDismiss(ActionSheet actionSheet, boolean isCancel) {

if (mUploadMessage !=null) {

mUploadMessage.onReceiveValue(null);

                mUploadMessage =null;

            }

if (mUploadMessagesAboveL !=null) {

mUploadMessagesAboveL.onReceiveValue(null);

                mUploadMessagesAboveL =null;

            }

actionSheet.dismiss();

        }

@RequiresApi(api = Build.VERSION_CODES.M)

public void onOtherButtonClick(ActionSheet actionSheet, int index) {

switch (index) {

case 0:

chosePicture();

break;

                case 1:

setRequestCamera();

            }

}

}).show();

}

//拍照,添加許可權申請  這個可以自己寫下,我這邊是項目中寫好的,直接拿過來用了

public void setRequestCamera() {

permissionsBuilder =new YXTPermissionsBuilder.Builder(this)

.setOnGrantedListener((requestCode, perms) -> {

openCamera();

            })

.setRationale4NeverAskAgain(LanguageUtils.isEnglish() ? String.format(getString(R.string.permission_tips), getString(R.string.common_camera), getString(R.string.app_name), getString(R.string.app_name)) :

String.format(getString(R.string.permission_tips), getString(R.string.app_name), getString(R.string.common_camera), getString(R.string.app_name)))

//必需

            .setRequestCode(ConstantsData.GET_CAMERA)

.build();

    permissionsBuilder.requestPermissions(Manifest.permission.CAMERA);

}

/**

* 本地相冊選擇圖片

*/

private void chosePicture() {

Intent innerIntent =new Intent(Intent.ACTION_GET_CONTENT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    innerIntent.setType("image/*");

    Intent wrapperIntent = Intent.createChooser(innerIntent, null);

    startActivityForResult(wrapperIntent, REQUEST_CHOOSE);

}

/**

* 打開照相機

*/

private void openCamera() {

Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    String imagePaths = Environment.getExternalStorageDirectory().getPath() +"/pbccrc/Images/" + (System.currentTimeMillis() +".jpg");

    // 必須確保文件夾路徑存在,否則拍照後無法完成回調

    File vFile =new File(imagePaths);

    if (!vFile.exists()) {

File vDirPath = vFile.getParentFile();

        vDirPath.mkdirs();

    }else {

if (vFile.exists()) {

vFile.delete();

        }

}

cameraUri = FileProvider.getUriForFile(

this,

            getPackageName() +".fileprovider",

            vFile);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri);

    startActivityForResult(intent, REQUEST_CAMERA);

}

/**

* 選擇照片後結束

*

* @param data

*/

private UriafterChosePic(Intent data) {

if (data !=null) {

final String path = data.getData().getPath();

        if (path !=null && (path.endsWith(".png") || path.endsWith(".PNG") || path.endsWith(".jpg") || path.endsWith(".JPG"))) {

return data.getData();

        }else {

Toast.makeText(this, "上傳的圖片僅支持png或jpg格式", Toast.LENGTH_SHORT).show();

        }

}

return null;

}

/**

* 返迴文件選擇

*/

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

if (mUploadMessagesAboveL !=null) {

onActivityResultAboveL(requestCode, resultCode, intent);

    }

if (mUploadMessage ==null)return;

    Uri uri =null;

    if (requestCode ==REQUEST_CAMERA && resultCode ==RESULT_OK) {

uri =cameraUri;

        Log.e("onActivityResult: " + uri.toString());

    }

if (requestCode ==REQUEST_CHOOSE && resultCode ==RESULT_OK) {

uri = afterChosePic(intent);

    }

mUploadMessage.onReceiveValue(uri);

    mUploadMessage =null;

    super.onActivityResult(requestCode, resultCode, intent);

}

/**

* 5.0以後機型 返迴文件選擇

*

* @param requestCode

* @param resultCode

* @param data

*/

private void onActivityResultAboveL(int requestCode, int resultCode, Intent data) {

Uri[] results =null;

    if (requestCode ==REQUEST_CAMERA && resultCode ==RESULT_OK) {

results =new Uri[]{cameraUri};

    }

if (requestCode ==REQUEST_CHOOSE && resultCode ==RESULT_OK) {

if (data !=null) {

String dataString = data.getDataString();

            if (dataString !=null)

results =new Uri[]{Uri.parse(dataString)};

        }

}

mUploadMessagesAboveL.onReceiveValue(results);

    mUploadMessagesAboveL =null;

return;

}

基本都可以拿去用了,希望有幫助

⑦ android中怎麼讀取系統相冊

從圖庫contentprovider找到該圖片對應的存儲path,調用file的delete就行了。。

⑧ 求:android 獲取系統相冊圖片並顯示在當前頁面的代碼

先初始化;

注意自定義 的

private final String IMAGE_TYPE = "image/*";private final int IMAGE_CODE = 0;


private void setImage() {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE);}
這里使用Intent獲得相冊圖片數據,並返回原來界面;

這里說明一下

startActivityForResult(getAlbum, IMAGE_CODE);

補充{

startActivityForResult與startActivity的不同之處在於:
1、startActivity( )
僅僅是跳轉到目標頁面,若是想跳回當前頁面,則必須再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成這項任務,當程序執行到這段代碼的時候,假若從T1Activity跳轉到下一個Text2Activity,而當這個Text2Activity調用了finish()方法以後,程序會自動跳轉回T1Activity,並調用前一個T1Activity中的onActivityResult( )方法。

}

startActivityForResult(getAlbum, IMAGE_CODE);

這里採用startActivityForResult來做跳轉,此處的IMAGE_CODE實質是0為一個依據,可以寫其他的值,但一定要>=0

然後重寫onActivityResult用於接收剛剛得到的數據

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bm = null; ContentResolver resolver = getContentResolver(); if (requestCode == IMAGE_CODE) { try {
Uri originalUri = data.getData(); bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); imgShow.setImageBitmap(bm); } catch (IOException e) {
e.printStackTrace(); }
}

補充{
ContentProvider-----數據提供給第三方應用程序使用時使用
因為在Android系統裡面,資料庫是私有的。一般情況下外部應用程序是沒有許可權讀取其他應用程序的數據。如果你想公開你自己的數據,你有兩個選擇:你可以創建你自己的內容提供器(一個ContentProvider子類)或者你可以給已有的提供器添加數據-如果存在一個控制同樣類型數據的內容提供器且你擁有寫的許可權
}
這里是創建一個新的內容提供器,然後在Activity當中通過getContentResolver()可以得到當前應用的 ContentResolver實例

if (requestCode == IMAGE_CODE) {
resultCode為回傳的標記這句話是在確認是否回傳的是你所需要的;如果是就執行try;不然就執行catch (IOException e) {
e.printStackTrace();}先說這里當try語句中出現異常是時,會執行catch中的語句,IOException e也就是實例化Exception類型的對象。e是此對象引用名稱。然後e(引用)會自動調用Exception類中指定的方法,也就出現了e.printStackTrace() ;。printStackTrace()方法的意思是:在命令行列印異常信息在程序中出錯的位置及原因。
try {
Uri originalUri = data.getData(); bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); imgShow.setImageBitmap(bm);接收數據處理數據並顯示照片。
然後進行測試。


另附源碼
MainActivity:
package com.example.administrator.myapplication1;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.io.IOException;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.graphics.Bitmap;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0; private Button choose=null; private ImageView imgShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init();} private void init() { choose=(Button) findViewById(R.id.button1); imgShow=(ImageView) findViewById(R.id.imgShow); choose.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener(){ @Override public void onClick(View v) {
setImage(); }

}; private void setImage() {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE); } protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bm = null; ContentResolver resolver = getContentResolver(); if (requestCode == IMAGE_CODE) { try {
Uri originalUri = data.getData(); bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); imgShow.setImageBitmap(bm); } catch (IOException e) {
e.printStackTrace(); }
}
}
}


layout:activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="選擇照相" android:layout_marginRight="190dp" android:layout_marginTop="8dp" android:paddingBottom="2dp" android:background="#aabbcc" /> <ImageView android:id="@+id/imgShow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="15dip" /></LinearLayout>

⑨ android中怎麼讀取系統相冊

Intent intent= new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
表示調用相冊選擇圖片
如果你要選擇文件:
Intent intent= new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "file/*");
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);

⑩ android 怎麼調取手機相冊

Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(i, 11);

閱讀全文

與android載入相冊相關的資料

熱點內容
傑西卡摩爾拍過的電影 瀏覽:12
主角叫江辰的小說 瀏覽:424
狼鷹電影女演員表 瀏覽:221
鐵雨3半島危機完整版 瀏覽:79
金燕演的電影 瀏覽:560
主角穿越到鴻蒙未判時 瀏覽:232
全球華人最大視頻平台 瀏覽:931
重生1934紅軍長征小說 瀏覽:137
愛情電影網怎麼打開了 瀏覽:853
男女同居黃帶片 瀏覽:347
波蘭愛情尺寸度電影推薦 瀏覽:340
資源小電影 瀏覽:55
關於核電站的香港電影 瀏覽:858
鄉村小說合集下載 瀏覽:825
韓國電影網站 瀏覽:895
飛天舞國語版電影 瀏覽:925
給個在線觀看網站 瀏覽:900
英語老師作弊課 瀏覽:280
美國電影消失的眼角膜完整版電影 瀏覽:312
愛搞電影 瀏覽:702