FileReceiverActivity.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. package com.ipaulpro.afilechooser;
  2. import android.app.Service;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.os.Environment;
  6. import android.os.Vibrator;
  7. import android.view.Gravity;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.AdapterView;
  11. import android.widget.BaseAdapter;
  12. import android.widget.ImageView;
  13. import android.widget.ListView;
  14. import android.widget.TextView;
  15. import com.xzjmyk.pm.activity.R;
  16. import com.core.xmpp.model.ChatMessage;
  17. import com.core.app.ActionBackActivity;
  18. import com.xzjmyk.pm.activity.ui.message.InstantMessageActivity;
  19. import com.xzjmyk.pm.activity.util.im.Constants;
  20. import java.io.File;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. /**
  24. * Created by Administrator on 2015/11/8.
  25. * 查看接收文件
  26. */
  27. public class FileReceiverActivity extends ActionBackActivity {
  28. private ListView mLvReceiver;
  29. private List<File> mDatas;
  30. private SelectFileWindow menuWindow;
  31. private FileReceiverAdapter receiverAdapter;
  32. private ChatMessage message;
  33. private FileInformationWindow menuWindow2;
  34. @Override
  35. protected void onCreate(Bundle savedInstanceState) {
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.activity_filereceiver);
  38. initView();
  39. loadData();
  40. }
  41. private void loadData() {
  42. message = (ChatMessage) getIntent().getParcelableExtra(Constants.INSTANT_MESSAGE);
  43. mDatas = new ArrayList<File>();
  44. File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/sk");
  45. if (f != null) {
  46. File[] files = f.listFiles();
  47. for (File file : files) {
  48. mDatas.add(file);
  49. }
  50. }
  51. receiverAdapter = new FileReceiverAdapter();
  52. mLvReceiver.setAdapter(receiverAdapter);
  53. /* 长按弹出转发,删除,取消等操作*/
  54. mLvReceiver.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  55. @Override
  56. public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
  57. Vibrator vib = (Vibrator) mContext.getSystemService(Service.VIBRATOR_SERVICE);
  58. vib.vibrate(40);// 只震动一秒,一次
  59. menuWindow = new SelectFileWindow(FileReceiverActivity.this, new ClickListener(position, mDatas.get(position)));
  60. // 显示窗口
  61. menuWindow.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
  62. return false;
  63. }
  64. });
  65. /* 点击打开指定方式*/
  66. mLvReceiver.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  67. @Override
  68. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  69. FileOpenWays openWays = new FileOpenWays(FileReceiverActivity.this);
  70. openWays.openFiles(mDatas.get(position).getAbsolutePath());
  71. }
  72. });
  73. }
  74. private void initView() {
  75. mLvReceiver = (ListView) findViewById(R.id.lv_file_receiver);
  76. getSupportActionBar().setTitle("ReceiverFile");
  77. }
  78. private class FileReceiverAdapter extends BaseAdapter {
  79. @Override
  80. public int getCount() {
  81. if (mDatas != null) {
  82. return mDatas.size();
  83. }
  84. return 0;
  85. }
  86. @Override
  87. public Object getItem(int position) {
  88. if (mDatas != null) {
  89. return mDatas.get(position);
  90. }
  91. return null;
  92. }
  93. @Override
  94. public long getItemId(int position) {
  95. return position;
  96. }
  97. @Override
  98. public View getView(int position, View convertView, ViewGroup parent) {
  99. if (convertView == null) {
  100. convertView = View.inflate(FileReceiverActivity.this, R.layout.item_filereceiver, null);
  101. }
  102. ((TextView) convertView.findViewById(R.id.tv_filereceiver)).setText(mDatas.get(position).getName().toString());
  103. ImageView iv = (ImageView) convertView.findViewById(R.id.iv_filereceiver);
  104. setFileIcon(iv, mDatas.get(position).getAbsolutePath());
  105. return convertView;
  106. }
  107. }
  108. /**
  109. * 实现点击事件
  110. */
  111. public class ClickListener implements View.OnClickListener {
  112. private int position;
  113. private File file;
  114. public ClickListener(int position, File file) {
  115. this.position = position;
  116. this.file = file;
  117. }
  118. @Override
  119. public void onClick(View v) {
  120. menuWindow.dismiss();
  121. switch (v.getId()) {
  122. case R.id.btn_instant:// 转发消息
  123. Intent intent = new Intent(FileReceiverActivity.this, InstantMessageActivity.class);
  124. intent.putExtra(Constants.INSTANT_MESSAGE_FILE, file.getAbsolutePath().toString());
  125. /*此处传文件这里message是没有什么用的,不过因为之前在chatactivity中已经对逻辑有了instantmessage非空的判断,所以这里就带上 */
  126. Bundle bundle = new Bundle();
  127. bundle.putParcelable(Constants.INSTANT_MESSAGE, message);
  128. intent.putExtras(bundle);
  129. startActivity(intent);
  130. break;
  131. case R.id.btn_delete:// 删除
  132. File file = mDatas.get(position);
  133. file.delete();
  134. mDatas.remove(position);
  135. receiverAdapter.notifyDataSetChanged();
  136. break;
  137. case R.id.btn_information:// 详情
  138. showPopuWindow(v,mDatas.get(position).getAbsolutePath());
  139. break;
  140. case R.id.btn_cancle:// 取消
  141. break;
  142. default:
  143. break;
  144. }
  145. }
  146. }
  147. /**
  148. * 弹出popuwindow
  149. * @param view
  150. * @param filePath
  151. */
  152. private void showPopuWindow(View view,String filePath) {
  153. menuWindow2 = new FileInformationWindow(FileReceiverActivity.this,filePath);
  154. // 显示窗口
  155. menuWindow2.showAtLocation(view, Gravity.CENTER, 0, 0);
  156. }
  157. /**
  158. * 为文件名设置图标
  159. *
  160. * @param v
  161. * @param filePath
  162. */
  163. public void setFileIcon(ImageView v, String filePath) {
  164. if (filePath == null) {
  165. v.setImageResource(R.drawable.ic_file);
  166. return;
  167. }
  168. String[] fileTypes = new String[]{"apk", "avi", "bat", "bin", "bmp", "chm", "css", "dat", "dll", "doc", "docx",
  169. "dos", "dvd", "gif", "html", "ifo", "inf", "iso", "java", "jpeg", "jpg", "log", "m4a", "mid", "mov",
  170. "movie", "mp2", "mp2v", "mp3", "mp4", "mpe", "mpeg", "mpg", "pdf", "php", "png", "ppt", "pptx", "psd",
  171. "rar", "tif", "ttf", "txt", "wav", "wma", "wmv", "xls", "xlsx", "xml", "xsl", "zip"};
  172. int pointIndex = filePath.lastIndexOf(".");
  173. if (pointIndex != -1) {
  174. String type = filePath.substring(pointIndex + 1).toLowerCase();
  175. for (int i = 0; i < fileTypes.length; i++) {
  176. if (type.equals(fileTypes[i])) {
  177. try {
  178. int resId = getResources().getIdentifier(type, "drawable", mContext.getPackageName());
  179. v.setImageResource(resId);
  180. } catch (Exception e) {
  181. e.printStackTrace();
  182. }
  183. }
  184. }
  185. }
  186. }
  187. }