بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
انتخاب عکس با فرمت gif از گالری(حل شده)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Amir
9 سال پیش
+1
0
با صدا زدن متد selectFile کاربر می تونه از گالری یا فایل منیجر فایلی رو انتخاب کنه و وقتی که فایل انتخاب شد به متد onActivityResult میره:
private static final int GIF_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 GIF"), GIF_SELECT_CODE);
}
catch (Exception e) {
// فایل منیجر یا گالری نصب نیست
}
}
public static String getSelectedFilePath(Uri uri) throws Exception {
if ("content".equalsIgnoreCase(uri.getScheme())) {
try {
Cursor cursor = G.context.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 GIF_SELECT_CODE:
if (resultCode == RESULT_OK) {
try {
Uri uri = data.getData();
String path = getSelectedFilePath(uri);
if (getFileExtension(path).equals("gif") || getFileExtension(path).equals("GIF")) {
// اگه فایلی که از گالری یا فایل منیجر انتخاب شده gif باشه این خط از کد اجرا میشه
} else {
// اگه gif نباشه این خط اجرا میشه
}
}
catch (Exception e) {}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
public String getFileExtension(String path) {
char[] spell = path.toCharArray();
for (int i = path.length() - 1; i >= 0; i--) {
String thisLetter = "" + spell[i];
if (thisLetter.equals(".")) {
return path.substring(i + 1, path.length());
}
}
return null;
}
چون که توی سامسونگ نحوه ی باز کردن گالری و فایل منیجر فرق می کنه و با اون یکی کد نمیشه این کارو کرد. گوشی نوت 5 فک کنم ورژن اندرویدش 6 هست. توی ورژن اندروید 6 به بعد باید پرمیشن ها رو به صورت ران تایم بگیرید و فقط تعریفشون توی منیفست کافی نیست: لینک (9 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .