001package com.gigya.android.sdk.utils; 002 003import android.annotation.SuppressLint; 004import android.content.Context; 005import android.content.pm.ApplicationInfo; 006import android.content.pm.PackageManager; 007import android.content.res.AssetManager; 008import android.os.Bundle; 009import android.os.Environment; 010import android.support.annotation.Nullable; 011 012import java.io.File; 013import java.io.IOException; 014import java.io.InputStream; 015import java.text.SimpleDateFormat; 016import java.util.Arrays; 017import java.util.Date; 018 019public class FileUtils { 020 private Context _context; 021 022 public FileUtils(Context context) { 023 _context = context; 024 } 025 026 public boolean containsFile(String fileName) { 027 final AssetManager am = _context.getAssets(); 028 try { 029 final String[] list = am.list(""); 030 if (list != null) { 031 return Arrays.asList(list).contains(fileName); 032 } 033 } catch (Exception ex) { 034 ex.printStackTrace(); 035 } 036 return false; 037 } 038 039 /* 040 Load JSON configuration file from application Assets folder. 041 */ 042 @SuppressWarnings("ResultOfMethodCallIgnored") 043 public String loadFile(String fileName) throws IOException { 044 return assetJsonFileToString(_context, fileName); 045 } 046 047 public Bundle getMetaData() { 048 try { 049 ApplicationInfo appInfo = _context.getPackageManager().getApplicationInfo(_context.getPackageName(), PackageManager.GET_META_DATA); 050 return appInfo.metaData; 051 } catch (Exception ex) { 052 ex.printStackTrace(); 053 } 054 return null; 055 } 056 057 @Nullable 058 public String stringFromMetaData(String fieldName) { 059 Bundle metaData = getMetaData(); 060 if (metaData == null) { 061 return null; 062 } else { 063 // Avoiding hard coded values and not string references to cause class cast exceptions. 064 if (metaData.get(fieldName) instanceof String) 065 return (String) metaData.get(fieldName); 066 else if (metaData.get(fieldName) instanceof Float || metaData.get(fieldName) instanceof Integer) { 067 return String.valueOf(fieldName); 068 } else return null; 069 } 070 } 071 072 @SuppressWarnings("ResultOfMethodCallIgnored") 073 public static String assetJsonFileToString(Context appContext, String fileName) throws IOException { 074 InputStream is = appContext.getAssets().open(fileName); 075 return streamToString(is); 076 } 077 078 @SuppressWarnings({"ResultOfMethodCallIgnored", "CharsetObjectCanBeUsed"}) 079 public static String streamToString(InputStream is) throws IOException { 080 final int size = is.available(); 081 byte[] buffer = new byte[size]; 082 is.read(buffer); 083 is.close(); 084 return new String(buffer, "UTF-8"); 085 } 086 087 @SuppressLint("SimpleDateFormat") 088 public static File createImageFile() throws IOException { 089 final String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 090 final String imageFileName = "JPEG_" + timeStamp + "_"; 091 final File storageDir = Environment.getExternalStoragePublicDirectory( 092 Environment.DIRECTORY_PICTURES); 093 return File.createTempFile( 094 imageFileName, /* prefix */ 095 ".jpg", /* suffix */ 096 storageDir /* directory */ 097 ); 098 } 099}