package com.example.wbdream.zigvine; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import com.example.wbdream.zigvine.friends.FriendsData; import com.example.wbdream.zigvine.friends.FriendsRecyclerAdapter; import com.example.wbdream.zigvine.https.UpLoadFile; import com.leon.lfilepickerlibrary.LFilePicker; import com.leon.lfilepickerlibrary.utils.Constant; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.UUID; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class FriendsList extends Fragment { private List<JSONObject> mData = null; private FriendsData sc = null; private SQLiteDatabase db = null; private FriendsRecyclerAdapter friendsRecyclerAdapter = null; private static final int FILE_CODE = 0; private static final String TAG = "FriendsList"; private String upLoadPath = null; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Log.e(TAG, "onCreateView: -----finish????-------" ); setHasOptionsMenu(true); final View view = inflater.inflate(R.layout.friends_list,container,false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); flushData(); Log.e(TAG, "onActivityCreated: +++++===================" ); // initData(); // RecyclerView friends_recycler = getActivity().findViewById(R.id.friends_recycler); // LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); // friends_recycler.setLayoutManager(layoutManager); // friendsRecyclerAdapter = new FriendsRecyclerAdapter(getContext(),mData); // Log.e(TAG, "onActivityCreated: ====================="+friendsRecyclerAdapter.hashCode() ); // friendsRecyclerAdapter.setOnItemClickListener(new FriendsRecyclerAdapter.OnItemClickListener() { // @Override // public void onClick(int position) { // Toast.makeText(getContext(),"点击事件"+position,Toast.LENGTH_SHORT).show(); // // //初始化某人聊天数据 // int uid; // try { // uid = mData.get(position).getInt("uid"); //// Cursor cursor = db.rawQuery("select * from CHATRECORD where friends_id = "+ uid,null); // Intent intent = new Intent(getContext(),ChatActivity.class); // intent.putExtra("uid",uid); // startActivity(intent); // // } catch (JSONException e) { // e.printStackTrace(); // } // // } // }); // friends_recycler.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL)); // friends_recycler.setAdapter(friendsRecyclerAdapter); // // //删除数据库 //// getContext().deleteDatabase("friend1.db"); // // //删除表内容 //// db.execSQL("delete from friends"); // //插入数据 // ContentValues values = new ContentValues(); // //// for ( int i=1;i<3;i++) { //// Log.e(TAG, "onActivityCreated: ______" + "张三" + i); //// values.put("friends_name","李四"+i); //// db.insert("FRIENDS", null,values ); //// values.clear(); //// } // // Toast.makeText(getContext(),"初始化数据库",Toast.LENGTH_SHORT).show(); // Cursor cursor = db.rawQuery("select friends_name,friendId from FRIENDS",null); // if (cursor.moveToFirst()){ // do { // String name = cursor.getString(cursor.getColumnIndex("friends_name")); // Log.e(TAG, "onActivityCreated: *******"+name +"----"+cursor.getInt(cursor.getColumnIndex("friendId"))); // }while(cursor.moveToNext()); // // } // cursor.close(); } //添加menu @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.friend_list_menu,menu); } //menu点击事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.add_friend: //跳转页面 Toast.makeText(getContext(),"add friend",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getContext(),AddFriendActivity.class); startActivity(intent); break; } return true; } public void initData() { //创建数据库 sc = new FriendsData(getContext(),"friend.db",null,4); db = sc.getWritableDatabase(); mData = new ArrayList(); Cursor cursor = db.rawQuery("select * from FRIENDS",null); if (cursor.moveToFirst()){ do { JSONObject json=new JSONObject(); try { // Log.e(TAG, "initData: _________" +cursor.getString(cursor.getColumnIndex("friends_name"))); json.put("user_name",cursor.getString(cursor.getColumnIndex("friends_name"))); json.put("message","你好呀!"); json.put("imageView",""); json.put("uid",cursor.getInt(cursor.getColumnIndex("friendId"))); } catch (JSONException e) { e.printStackTrace(); } mData.add(json); // Log.e(TAG, "initData: ++++"+mData.size() ); }while(cursor.moveToNext()); } cursor.close(); } @Override public void onResume() { Log.e(TAG, "onResume: --------resume------"+friendsRecyclerAdapter.hashCode() ); Log.e(TAG, "onResume: ==========="+mData.size() ); flushData(); super.onResume(); } //刷新数据 public void flushData(){ initData(); RecyclerView friends_recycler = getActivity().findViewById(R.id.friends_recycler); LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); friends_recycler.setLayoutManager(layoutManager); friendsRecyclerAdapter = new FriendsRecyclerAdapter(getContext(),mData); Log.e(TAG, "onActivityCreated: ====================="+friendsRecyclerAdapter.hashCode() ); friendsRecyclerAdapter.setOnItemClickListener(new FriendsRecyclerAdapter.OnItemClickListener() { int uid; @Override public void onClick(int position) { Toast.makeText(getContext(),"点击事件"+position,Toast.LENGTH_SHORT).show(); Log.e(TAG, "onClick: ----点击事件----" ); //初始化某人聊天数据 try { uid = mData.get(position).getInt("uid"); // Cursor cursor = db.rawQuery("select * from CHATRECORD where friends_id = "+ uid,null); Intent intent = new Intent(getContext(),ChatActivity.class); intent.putExtra("uid",uid); // startActivity(intent); Log.e(TAG, "onClick: ----https--" ); @SuppressLint("HandlerLeak") final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 111: Toast.makeText(getContext(),"jjjj"+msg.obj,Toast.LENGTH_SHORT).show(); break; } } }; //文件传输 String sdpath; // sdpath = "/mnt/"; // sdpath = getContext().getFilesDir(); Log.e(TAG, "onClick: ----————"+getContext().getFilesDir() ); Log.e(TAG, "onClick: ----————"+Environment.getExternalStorageDirectory() ); File file = new File(getContext().getFilesDir(),"a2.txt"); Log.e(TAG, "onClick: cahgnjan ==========="+!file.exists()+" "+getContext().getFilesDir() +getContext().getExternalCacheDir() ); try { File fp=getContext().getFilesDir(); if (!fp.exists()){ fp.mkdirs(); Log.e(TAG, "onClick: --------创建文件夹" ); } getContext().getFilesDir().mkdirs(); if (!file.exists()){ Log.e(TAG, "onClick: ———创建不成吗—————" ); file.createNewFile(); System.out.print("jsdhj"); Log.e(TAG, "onClick: --------创建了吗" ); } FileInputStream inputStream = new FileInputStream(file); inputStream.close(); FileOutputStream outputStream = new FileOutputStream(file); outputStream.write("hello".getBytes()); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } new LFilePicker().withSupportFragment(FriendsList.this) .withRequestCode(Constant.ICON_STYLE_BLUE) .withTitle("文件管理器") // .withStartPath("/storage/emulated/0/Download")//指定初始显示路径 .withStartPath(getContext().getFilesDir().toString())//指定初始显示路径 .withNotFoundBooks("至少选择一个文件") .start(); //###############注意这里是 GET 请求 ########## ///////////////// // new Thread(new Runnable() { // // @Override // public void run() { // getHttps(); // } // public void getHttps(){ // Log.e(TAG, "getHttps:-------执行了吗------ https://192.168.1.34:8000/index/" ); // String https = "https://192.168.1.34:8000/index/"; // try { // SSLContext sc = SSLContext.getInstance("TLS"); // sc.init(null,new TrustManager[]{new MyTrustManager()},new SecureRandom()); // HttpsURLConnection.setDefaultSSLSocketFactory((sc.getSocketFactory())); // HttpsURLConnection.setDefaultHostnameVerifier(new MyHostnameVerifier()); // HttpsURLConnection conn = (HttpsURLConnection)new URL(https).openConnection(); // conn.setDoOutput(true); // conn.setDoInput(true); // Log.e(TAG, "getHttps: ++++++结果111+++++" ); // // conn.connect(); // Log.e(TAG, "getHttps: ++++++结果2222+++++" ); // BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); // StringBuffer sb = new StringBuffer(); // String line; // while ((line = br.readLine())!=null){ // sb.append(line); // } // Log.e(TAG, "getHttps: ++++++结果+++++"+sb.toString() ); // Message msg = new Message(); // msg.what=111; // msg.obj=sb.toString(); // handler.sendMessage(msg); // } catch (NoSuchAlgorithmException e) { // e.printStackTrace(); // } catch (KeyManagementException e) { // e.printStackTrace(); // } catch (MalformedURLException e) { // e.printStackTrace(); // } catch (IOException e) { // e.printStackTrace(); // } // } // class MyHostnameVerifier implements HostnameVerifier{ // @Override // public boolean verify(String hostname, SSLSession session) { // // TODO Auto-generated method stub // return true; // } // // } // // class MyTrustManager implements X509TrustManager{ // @Override // public void checkClientTrusted(X509Certificate[] chain, String authType) // throws CertificateException { // // TODO Auto-generated method stub // } // @Override // public void checkServerTrusted(X509Certificate[] chain, String authType) // // throws CertificateException { // // TODO Auto-generated method stub // } // @Override // public X509Certificate[] getAcceptedIssuers() { // // TODO Auto-generated method stub // return null; // } // // } // // }).start(); } catch (JSONException e) { e.printStackTrace(); } } //清空聊天记录 @Override public void clearRecord(int position) { try { uid = mData.get(position).getInt("uid"); } catch (JSONException e) { e.printStackTrace(); } db.execSQL("delete from chatrecord where friends_id = "+ uid+";"); Cursor cursor2 =db.rawQuery("select * from CHATRECORD ;",null); Log.e(TAG, "clearRecord: " +cursor2.moveToFirst() + db.equals(null)); if (cursor2.moveToFirst()){ do { Log.e(TAG, "clearRecord: 00-----"+cursor2.getString(cursor2.getColumnIndex("content")) ); }while (cursor2.moveToNext()); } Log.e(TAG, "clearRecord: 8888888888" +"delete from CHATRECORD where friends_id ="+ uid); } // @Override // public void onLongClick(int position) { // Toast.makeText(getContext(),"长按事件",Toast.LENGTH_SHORT).show(); // Log.e(TAG, "onLongClick: ___***长按事件**___" ); //// AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); //// builder.setTitle("hahahha"); //// builder.show(); // // //长按功能键 // } }); friends_recycler.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL)); friends_recycler.setAdapter(friendsRecyclerAdapter); //删除数据库 // getContext().deleteDatabase("friend1.db"); //删除表内容 // db.execSQL("delete from CHATRECORD"); //插入数据 ContentValues values = new ContentValues(); // for ( int i=1;i<3;i++) { // Log.e(TAG, "onActivityCreated: ______" + "张三" + i); // values.put("friends_name","李四"+i); // db.insert("FRIENDS", null,values ); // values.clear(); // } Toast.makeText(getContext(),"初始化数据库",Toast.LENGTH_SHORT).show(); Cursor cursor = db.rawQuery("select friends_name,friendId from FRIENDS",null); if (cursor.moveToFirst()){ do { String name = cursor.getString(cursor.getColumnIndex("friends_name")); Log.e(TAG, "onActivityCreated: *******"+name +"----"+cursor.getInt(cursor.getColumnIndex("friendId"))); }while(cursor.moveToNext()); } cursor.close(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { // List<String> list = data.getStringArrayListExtra("paths"); // String path = data.getStringExtra("path"); // String param = data.getStringExtra("param"); List<String> list = null; list = data.getStringArrayListExtra(Constant.RESULT_INFO); //选中文件 if (list.size()>0){ for (String string: list) { Log.e(TAG, "onActivityResult: *************"+string ); File file =new File(string); upLoadPath = string; //https请求 new Thread(new Runnable() { @Override public void run() { //################ 这里是 认证所有证书 trustAllCerts信任所有的证书################### handleSSLHandshake();
//################ https POST 请求 ############# httpPost("https://192.168.1.32:8000/index/up","/data/user/0/com.example.wbdream.zigvine/files/a2.txt","a2.txt"); // httpPost("https://192.168.1.32:8000/index/up",string,file.getName()); } }).start(); try { FileReader fr=new FileReader(file); byte[] bytes=new byte[1024]; BufferedReader br = new BufferedReader(fr); String s=""; while ((s=br.readLine())!=null){ Log.e(TAG, "onActivityResult: =============="+s ); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } } /** * 往服务器上上传文本 比如log日志 * @param urlstr 请求的url * @param uploadFile log日志的路径 * /mnt/shell/emulated/0/LOG/LOG.log * @param newName log日志的名字 LOG.log * @return */ public static void httpPost(String urlstr,String uploadFile,String newName) { Log.e(TAG,"urlstr="+urlstr+";uploadFile="+uploadFile+";newName="+newName ); String end = "\r\n"; String twoHyphens = "--"; String boundary = "*****";//边界标识 int TIME_OUT = 10*1000; //超时时间 HttpsURLConnection con = null; DataOutputStream ds = null; InputStream is = null; try { URL url = new URL(urlstr); con = (HttpsURLConnection) url.openConnection(); Log.e(TAG, "httpPost: 1111111111" ); con.setReadTimeout(TIME_OUT); con.setConnectTimeout(TIME_OUT); /* 允许Input、Output,不使用Cache */ con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); // 设置http连接属性 con.setRequestMethod("POST");//请求方式 con.setRequestProperty("Connection", "Keep-Alive");//在一次TCP连接中可以持续发送多份数据而不会断开连接 con.setRequestProperty("Charset", "UTF-8");//设置编码 con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);//multipart/form-data能上传文件的编码格式 Log.e(TAG, "httpPost: ------------" ); ds = new DataOutputStream(con.getOutputStream()); Log.e(TAG, "httpPost: 2222222222" ); ds.writeBytes(twoHyphens + boundary + end); ds.writeBytes("Content-Disposition: form-data; " + "name=\"stblog\";filename=\"" + newName + "\"" + end); ds.writeBytes(end); // 取得文件的FileInputStream FileInputStream fStream = new FileInputStream(uploadFile); Log.e(TAG, "httpPost: 333333333333" ); /* 设置每次写入1024bytes */ int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int length = -1; /* 从文件读取数据至缓冲区 */ while ((length = fStream.read(buffer)) != -1) { /* 将资料写入DataOutputStream中 */ ds.write(buffer, 0, length); } ds.writeBytes(end); ds.writeBytes(twoHyphens + boundary + twoHyphens + end);//结束 fStream.close(); ds.flush(); /* 取得Response内容 */ is = con.getInputStream(); int ch; StringBuffer b = new StringBuffer(); while ((ch = is.read()) != -1) { b.append((char) ch); } /* 将Response显示于Dialog */ Log.e(TAG, "httpPost: ------上传成功-----"); } catch (Exception e) { e.printStackTrace(); Log.e(TAG, "httpPost: ======----"+e ); Log.e(TAG, "httpPost: --------上传失败----" ); }finally { /* 关闭DataOutputStream */ if(ds!=null){ try { ds.close(); } catch (IOException e) { e.printStackTrace(); } } if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (con != null) { con.disconnect(); } } } public static void handleSSLHandshake() { try { TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } @Override public void checkClientTrusted(X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted(X509Certificate[] certs, String authType) { } }}; SSLContext sc = SSLContext.getInstance("TLS"); // trustAllCerts信任所有的证书 sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); } catch (Exception ignored) { } } }
原文地址:https://www.cnblogs.com/wbdream/p/9993876.html
时间: 2024-11-09 02:02:22