2016-10-24 2 views
0

sendbird API에서 sendFileMessage을 사용하고 싶습니다. 파일 값이 필요하며이 파일을 drawable (또는 assets)에서 사용하고 싶습니다.sendbird와 함께 보낼 드로어 블에서 파일 만들기

sendBird API은 sendbird

Hashtable<String, Object> info = Helper.getFileInfo(getActivity(), uri); 
final String path = (String) info.get("path"); 
File file = new File(path); 
String name = file.getName(); 
String mime = (String) info.get("mime"); 
int size = (Integer) info.get("size"); 

sendFileMessage(file, name, mime, size, "", new BaseChannel.SendFileMessageHandler() { 
    public void onSent(FileMessage fileMessage, SendBirdException e) { 
     if (e != null) { 
      return; 
     } 
     mAdapter.appendMessage(fileMessage); 
     mAdapter.notifyDataSetChanged(); 
    } 
}); 

나는 열린 이미지의 의도에서 uri을 가지고 잘 작동이 코드에서 코드를 냈다된다. 하지만 난 다른 용도로 사용하려는 내가

try { 
    File f=new File("file name"); 
    InputStream inputStream = getResources().openRawResource(R.raw.myrawfile); 
    OutputStream out=new FileOutputStream(f); 
    byte buf[]=new byte[1024]; 
    int len; 
    while((len=inputStream.read(buf))>0) 
    out.write(buf,0,len); 
    out.close(); 
    inputStream.close(); 
} 
catch (IOException e){} 
inputStream을

uri

Uri uri = Uri.parse("android.resource://com.package.name/raw/filenameWithoutExtension"); 
File file = new File(uri.getPath()); 

과 시도 코드를

File file = new File(<path or uri from drawable or assets>); 

같은

File file = new File(path); 

이 될 무언가를 교체하려면

은 항상 파일 가져 오기에 실패했으며 오류 코드를 반환했습니다. ERR_REQUEST_FAILED 800220

답변

0

아래와 같이 시도해 보셨습니까?

String fileName = FILE_NAME; 
File cachedFile = new File(this.getActivity().getCacheDir(), fileName); 

try { 
    InputStream is = getResources().openRawResource(R.raw.sendbird_ic_launcher); 
    FileOutputStream fos = new FileOutputStream(cachedFile); 
    byte buf[] = new byte[1024]; 
    int len; 
    while ((len = is.read(buf)) > 0) 
     fos.write(buf, 0, len); 
     fos.close(); 
     is.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

groupChannel.sendFileMessage(cachedFile, fileName, "image/jpg", (int) cachedFile.length(), "", new BaseChannel.SendFileMessageHandler() { 
    @Override 
    public void onSent(FileMessage fileMessage, SendBirdException e) { 
    } 
}); 

이것은 저에게 효과적입니다.

+0

내가 원하는대로 일하고있어. 고맙습니다. –

관련 문제