Guest User

Untitled

a guest
Nov 15th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.63 KB | None | 0 0
  1. 11-15 13:53:27.303 4363-4363/? E/CrearCarpteaAlIn: Error: No se creo el directorio privado
  2. 11-15 13:53:27.303 4363-4363/? E/Error: java.io.IOException: open failed: EACCES (Permission denied)
  3. 11-15 13:53:27.303 4363-4363/? W/System.err: java.io.IOException: open failed: EACCES (Permission denied)
  4. 11-15 13:53:27.313 4363-4363/? W/System.err: at java.io.File.createNewFile(File.java:972)
  5. at com.example.usuario.prueba.SubirArchivosPDFWORD.onClick(SubirArchivosPDFWORD.java:161)
  6. at android.view.View.performClick(View.java:4578)
  7. at android.view.View$PerformClick.run(View.java:18654)
  8. at android.os.Handler.handleCallback(Handler.java:733)
  9. at android.os.Handler.dispatchMessage(Handler.java:95)
  10. at android.os.Looper.loop(Looper.java:136)
  11. at android.app.ActivityThread.main(ActivityThread.java:5021)
  12. at java.lang.reflect.Method.invokeNative(Native Method)
  13. at java.lang.reflect.Method.invoke(Method.java:515)
  14. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
  15. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
  16. 11-15 13:53:27.323 4363-4363/? W/System.err: at dalvik.system.NativeStart.main(Native Method)
  17. Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
  18. at libcore.io.Posix.open(Native Method)
  19. at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
  20. at java.io.File.createNewFile(File.java:965)
  21. ... 12 more
  22.  
  23. <uses-permission android:name="android.permission.INTERNET" />
  24. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  25. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  26.  
  27. E/PATH: /data/user/0/com.android.providers.downloads/cache/ordcom64-doc2018-06-15.pdf
  28.  
  29. E/PATH: /storge/emulated/0/Download/solucione.pdf
  30.  
  31. <uses-permission android:name="android.permission.INTERNET" />
  32. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  33. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  34.  
  35. <application
  36. android:allowBackup="true"
  37. android:icon="@mipmap/ic_launcher"
  38. android:label="@string/app_name"
  39. android:roundIcon="@mipmap/ic_launcher_round"
  40. android:supportsRtl="true"
  41. android:theme="@style/AppTheme">
  42. <activity android:name=".MainActivity" />
  43. <activity android:name=".DescargarArchivosPDF">
  44. </activity>
  45. <activity android:name=".SubirImagenes">
  46.  
  47.  
  48. </activity>
  49. <activity android:name=".Galeria">
  50.  
  51. </activity>
  52. <activity android:name=".SubirArchivosPDFWORD">
  53. <intent-filter>
  54. <action android:name="android.intent.action.MAIN" />
  55.  
  56. <category android:name="android.intent.category.LAUNCHER" />
  57. </intent-filter>
  58. </activity>
  59. </application>
  60.  
  61. import android.Manifest;
  62. import android.content.ContentUris;
  63. import android.content.Context;
  64. import android.content.Intent;
  65. import android.content.pm.PackageManager;
  66. import android.database.Cursor;
  67. import android.net.Uri;
  68. import android.os.AsyncTask;
  69. import android.os.Build;
  70. import android.os.Environment;
  71. import android.provider.DocumentsContract;
  72. import android.provider.MediaStore;
  73. import android.support.annotation.NonNull;
  74. import android.support.v4.app.ActivityCompat;
  75. import android.support.v4.content.ContextCompat;
  76. import android.support.v7.app.AppCompatActivity;
  77. import android.os.Bundle;
  78. import android.util.Log;
  79. import android.view.View;
  80. import android.webkit.MimeTypeMap;
  81. import android.widget.Button;
  82. import android.widget.TextView;
  83. import android.widget.Toast;
  84.  
  85. import java.io.File;
  86. import java.io.FileInputStream;
  87. import java.io.FileOutputStream;
  88. import java.io.IOException;
  89. import java.net.URISyntaxException;
  90. import java.nio.channels.FileChannel;
  91.  
  92. import okhttp3.MediaType;
  93. import okhttp3.MultipartBody;
  94. import okhttp3.OkHttpClient;
  95. import okhttp3.Request;
  96. import okhttp3.RequestBody;
  97. import okhttp3.Response;
  98.  
  99. //FUNCIONA, SUBE ARCHIVOS DE INTERNO Y EXTERNO
  100. public class SubirArchivosPDFWORD extends AppCompatActivity implements View.OnClickListener {
  101. private Button BtnExaminar_Archivos, BtnSubir_Archivos;
  102. private TextView TxVwNombre;
  103. private static final int SELECT_FILE = 1;
  104. private final int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 124;
  105. private boolean PERM_WRITE = false;
  106. private String PATHIREAL, PATHREAL = null;
  107.  
  108. @Override
  109. protected void onCreate(Bundle savedInstanceState) {
  110. super.onCreate(savedInstanceState);
  111. setContentView(R.layout.activity_subir_archivos_pdf_word);
  112. BtnExaminar_Archivos = (Button) findViewById(R.id.BtnExaminar_Archivos);
  113. BtnSubir_Archivos = (Button) findViewById(R.id.BtnSubir_Archivos);
  114. TxVwNombre = (TextView) findViewById(R.id.TxVwNombre);
  115. BtnExaminar_Archivos.setOnClickListener(this);
  116. BtnSubir_Archivos.setOnClickListener(this);
  117. SolicitarPermiso();
  118. }
  119.  
  120. void SolicitarPermiso() {
  121. ///Pregunta los Permisos
  122. if (ContextCompat.checkSelfPermission(this,
  123. Manifest.permission.WRITE_EXTERNAL_STORAGE)
  124. != PackageManager.PERMISSION_GRANTED) {
  125. //PERMISO DENEGADO
  126. //HAY RESPUESTA
  127. if (ActivityCompat.shouldShowRequestPermissionRationale(this,
  128. Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
  129. Toast.makeText(this, "HAY RPA", Toast.LENGTH_SHORT).show();
  130. //PERMISO DENEGADO
  131. if (getPackageManager().PERMISSION_DENIED == -1) {
  132. //PERMISO DENEGADO ANTERIORMENTE
  133. Toast.makeText(this, "DENEGADO", Toast.LENGTH_SHORT).show();
  134. ///PIDE PERMISO
  135. ActivityCompat.requestPermissions(this,
  136. new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
  137. MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
  138.  
  139. } else {///PERMISO ACEPTADO
  140. PERM_WRITE = true;
  141. }
  142. } else {
  143. ///NO HAY RESPUESTA
  144. ActivityCompat.requestPermissions(this,
  145. new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
  146. MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
  147. Toast.makeText(this, "NOHAY RPA", Toast.LENGTH_SHORT).show();
  148. PERM_WRITE = false;
  149. }
  150. } else {//PERMISO ACEPTADO
  151. PERM_WRITE = true;
  152. Toast.makeText(this, "Aceptado Write", Toast.LENGTH_SHORT).show();
  153. }
  154.  
  155. if (ContextCompat.checkSelfPermission(this,
  156. Manifest.permission.READ_EXTERNAL_STORAGE)
  157. != PackageManager.PERMISSION_GRANTED) {
  158. Toast.makeText(this, "HAY RPTA READ", Toast.LENGTH_SHORT).show();
  159.  
  160. } else {
  161. Toast.makeText(this, "Aceptado Read", Toast.LENGTH_SHORT).show();
  162. }
  163.  
  164.  
  165. }
  166.  
  167. @Override
  168. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  169. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  170. //LLega Sirve para procesar la respuesta del Permiso
  171. switch (requestCode) {
  172. case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE:
  173. // If request is cancelled, the result arrays are empty.
  174. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  175. Toast.makeText(this, "SI HAY PERMISO", Toast.LENGTH_SHORT).show();
  176. PERM_WRITE = true;
  177. } else {
  178. Toast.makeText(this, "NO HAY PERMISO", Toast.LENGTH_SHORT).show();
  179. PERM_WRITE = false;
  180. }
  181. break;
  182. }
  183. }
  184.  
  185. @Override
  186. public void onClick(View v) {
  187. switch (v.getId()) {
  188. case R.id.BtnExaminar_Archivos:
  189. SolicitarPermiso();
  190. if (PERM_WRITE) {
  191. String[] mimeTypes = {"application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"};
  192. Intent intent = new Intent();
  193. intent.setType("application/*").putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
  194. //intent.setType("image/JPG");
  195. //intent.setType("image/jpeg");
  196. //intent.setType("image/jpg");
  197. //intent.setType("image/png");
  198. //intent.setAction(Intent.ACTION_GET_CONTENT);
  199. intent.setAction(Intent.ACTION_GET_CONTENT);
  200. Uri mImageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
  201. startActivityForResult(
  202. Intent.createChooser(intent, "Seleccione un DOCUMENTO"),
  203. 1);
  204. }
  205. break;
  206. case R.id.BtnSubir_Archivos:
  207. try {
  208. File interno = new File(crearCarpetaAlmInterno() + "/" + new File(PATHREAL).getName());
  209. File temp = new File(PATHREAL);
  210. temp.createNewFile();
  211. copyFile(temp, interno);
  212. new UploadFile(interno.getAbsolutePath()).execute();
  213. } catch (IOException e) {
  214. Log.e("Error", e.toString());
  215. e.printStackTrace();
  216. }
  217. //new UploadFile(PATHREAL).execute();
  218. break;
  219. }
  220. }
  221.  
  222. @Override
  223. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  224. super.onActivityResult(requestCode, resultCode, data);
  225. Uri selectedImage;
  226. if (requestCode == 1 && resultCode == RESULT_OK && null != data) {
  227. String name = data.getData().getLastPathSegment();
  228. PATHIREAL = data.getData().getPath();
  229. try {
  230. PATHREAL = getFilePath(this, data.getData());
  231. TxVwNombre.setText("name=" + name + " PATH=" + PATHREAL);
  232. } catch (URISyntaxException e) {
  233. e.printStackTrace();
  234. }
  235. Log.e("PATH", PATHREAL);
  236. }
  237.  
  238. }
  239.  
  240. public static String getFilePath(Context context, Uri uri) throws URISyntaxException {
  241. String selection = null;
  242. String[] selectionArgs = null;
  243. // Uri is different in versions after KITKAT (Android 4.4), we need to
  244. if (Build.VERSION.SDK_INT >= 19 && DocumentsContract.isDocumentUri(context.getApplicationContext(), uri)) {
  245. if (isExternalStorageDocument(uri)) {
  246. final String docId = DocumentsContract.getDocumentId(uri);
  247. final String[] split = docId.split(":");
  248. return Environment.getExternalStorageDirectory() + "/" + split[1];
  249. } else if (isDownloadsDocument(uri)) {
  250. final String id = DocumentsContract.getDocumentId(uri);
  251. uri = ContentUris.withAppendedId(
  252. Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
  253.  
  254. } else if (isMediaDocument(uri)) {
  255. final String docId = DocumentsContract.getDocumentId(uri);
  256. final String[] split = docId.split(":");
  257. final String type = split[0];
  258. if ("image".equals(type)) {
  259. uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
  260. } else if ("video".equals(type)) {
  261. uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
  262. } else if ("audio".equals(type)) {
  263. uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
  264. }
  265. selection = "_id=?";
  266. selectionArgs = new String[]{
  267. split[1]
  268. };
  269. }
  270. }
  271. if ("content".equalsIgnoreCase(uri.getScheme())) {
  272. String[] projection = {
  273. MediaStore.Images.Media.DATA
  274. };
  275. Cursor cursor = null;
  276. try {
  277. cursor = context.getContentResolver()
  278. .query(uri, projection, selection, selectionArgs, null);
  279. int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  280. if (cursor.moveToFirst()) {
  281. return cursor.getString(column_index);
  282. }
  283. } catch (Exception e) {
  284. }
  285. } else if ("file".equalsIgnoreCase(uri.getScheme())) {
  286. return uri.getPath();
  287. }
  288. return null;
  289. }
  290.  
  291. public static boolean isExternalStorageDocument(Uri uri) {
  292. return "com.android.externalstorage.documents".equals(uri.getAuthority());
  293. }
  294.  
  295. public static boolean isDownloadsDocument(Uri uri) {
  296. return "com.android.providers.downloads.documents".equals(uri.getAuthority());
  297.  
  298. }
  299.  
  300. public static boolean isMediaDocument(Uri uri) {
  301. return "com.android.providers.media.documents".equals(uri.getAuthority());
  302. }
  303.  
  304. /***crear Directorio en la memoria interna */
  305.  
  306. public File crearCarpetaAlmInterno() {
  307. String nombreDirectorio = "TCompra";
  308. //Crear directorio en la memoria interna.
  309. File directorioInterno = new File(getFilesDir(), nombreDirectorio);
  310. //Muestro un mensaje en el logcat si no se creo la carpeta por algun motivo
  311. if (!directorioInterno.mkdirs()) {
  312. Log.e("CrearCarpteaAlIn", "Error: No se creo el directorio privado");
  313. }
  314.  
  315. if (directorioInterno.exists() && directorioInterno.isDirectory()) {//SI EXISTE
  316. Toast.makeText(this, "DIRECTORIO EXISTE", Toast.LENGTH_SHORT).show();
  317. } else {//NO EXISTE
  318. Toast.makeText(this, "DIRECTORIO NO EXISTE", Toast.LENGTH_SHORT).show();
  319.  
  320. }
  321.  
  322. return directorioInterno;
  323. }
  324.  
  325. public static void copyFile(File sourceFile, File destFile) throws IOException {
  326. if (!destFile.exists()) {
  327. destFile.createNewFile();
  328. }
  329.  
  330. FileChannel origen = null;
  331. FileChannel destino = null;
  332. try {
  333. origen = new FileInputStream(sourceFile).getChannel();
  334. destino = new FileOutputStream(destFile).getChannel();
  335.  
  336. long count = 0;
  337. long size = origen.size();
  338. while ((count += destino.transferFrom(origen, count, size - count)) < size) ;
  339. } finally {
  340. if (origen != null) {
  341. origen.close();
  342. }
  343. if (destino != null) {
  344. //destFile.mkdirs();
  345. destino.close();
  346. }
  347. }
  348. }
  349.  
  350.  
  351. private class UploadFile extends AsyncTask<String, String, String> {
  352. String PATREAL = null;
  353.  
  354. public UploadFile(String PATREAL) {
  355. this.PATREAL = PATREAL;
  356. }
  357.  
  358. @Override
  359. protected String doInBackground(String... strings) {
  360. File f = new File(this.PATREAL);
  361.  
  362.  
  363. //String content_type = getMimeType(this.PATREAL);
  364. String content_type = getMimeType2(PATREAL);
  365. Log.i("content_type ", content_type);
  366. String file_path = PATREAL;
  367. Log.d("File ", file_path);
  368. OkHttpClient client = new OkHttpClient();
  369. RequestBody file_body = RequestBody.create(MediaType.parse(content_type), f);
  370. RequestBody request_body = new MultipartBody.Builder()
  371. .setType(MultipartBody.FORM)
  372. .addFormDataPart("type", content_type)
  373. .addFormDataPart("uploaded_file", file_path.substring(file_path.lastIndexOf("/") + 1), file_body)
  374. .build();
  375.  
  376. Request request = new Request.Builder()
  377. .url("http://www.tcompra.com/ServiceWeb/Servicios/Prueba/Upload.php")
  378. .post(request_body)
  379. .build();
  380.  
  381. try {
  382. Response response = client.newCall(request).execute();
  383.  
  384. if (!response.isSuccessful()) {
  385. //Toast.makeText(SubirImagenes.this, "Archivo no subido", Toast.LENGTH_SHORT).show();
  386. throw new IOException("Error : " + response);
  387.  
  388. }
  389.  
  390.  
  391. } catch (IOException e) {
  392. e.printStackTrace();
  393. Log.e("Error", e.toString());
  394. }
  395.  
  396.  
  397. return null;
  398. }
  399. }
  400.  
  401. private String getMimeType(String path) {
  402.  
  403. String type = null;
  404. String extension = MimeTypeMap.getFileExtensionFromUrl(path);
  405. if (extension != null) {
  406. type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase());
  407. }
  408. return type;
  409.  
  410.  
  411. }
  412.  
  413. public static String getMimeType2(String url) {
  414. String extension = url.substring(url.lastIndexOf("."));
  415. String mimeTypeMap = MimeTypeMap.getFileExtensionFromUrl(extension);
  416. String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(mimeTypeMap);
  417. return mimeType;
  418. }
  419.  
  420. }
Add Comment
Please, Sign In to add comment