بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
باز کردن گالری
من میخوام تو پروژم گالریم رو باز کنم و یه عکس انتخاب کنم تا تعغیراتمو روش انجام بدم . کسی میدونه باید چه کار کنم؟
برای این سوال 1 پاسخ وجود دارد.

پاسخ به سوال
Amir
8 سال پیش
+1
0
با کدهای زیر لیست فایل منیجر و گالری و... برای کاربر باز میشه که از هر کدوم که خواست می تونه عکس رو بگیره. گرفتن فایل توی گوشی Samsung با بقیه فرق می کنه و من توی کد زیر چک کردم اگه Samsung بود به یه روش دیگه عکس رو بگیره. هر جا که خواستید عکس رو بگیرید متد selectFile()
رو صدا بزنید:
private static final int AVATAR_SELECT_CODE = 20;
private void selectFile() {
Intent intent = null;
if (Build.BRAND.equals("samsung") || Build.BRAND.equals("Samsung")) {
intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
intent.putExtra("CONTENT_TYPE", "image/*");
intent.addCategory(Intent.CATEGORY_DEFAULT);
} else {
intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
}
try {
startActivityForResult(Intent.createChooser(intent, "Select Image", AVATAR_SELECT_CODE);
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Please install a File Manager", Toast.LENGTH_SHORT);
}
}
private String getSelectedFilePath(Uri uri) throws Exception {
if ("content".equalsIgnoreCase(uri.getScheme())) {
try {
Cursor cursor = getApplicationContext().getContentResolver().query(uri, new String[]{ "_data" }, null, null, null);
int column_index = cursor.getColumnIndexOrThrow("_data");
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
}
catch (Exception e) {}
}
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case AVATAR_SELECT_CODE:
if (resultCode == RESULT_OK) {
try {
Uri uri = data.getData();
String path = getSelectedFilePath(uri); // این مسیر فایلی هست که کاربر انتخاب کرده
}
catch (Exception e) {}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
اگه می خواید تغییرشم بدید پرمیشن زیر رو به منیفست اضافه کنید:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .