Guest User

Untitled

a guest
Jul 25th, 2017
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.16 KB | None | 0 0
  1. package com.kapil.demo.demo;
  2.  
  3. import android.Manifest;
  4. import android.app.Activity;
  5. import android.content.pm.PackageManager;
  6. import android.content.res.AssetFileDescriptor;
  7. import android.database.Cursor;
  8. import android.net.Uri;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.os.Environment;
  12. import android.provider.ContactsContract;
  13. import android.support.v4.app.ActivityCompat;
  14.  
  15. import android.util.Log;
  16. import android.view.LayoutInflater;
  17. import android.view.Menu;
  18.  
  19. import android.widget.Toast;
  20.  
  21. import java.io.ByteArrayOutputStream;
  22. import java.io.File;
  23. import java.io.FileInputStream;
  24. import java.io.FileNotFoundException;
  25. import java.io.FileOutputStream;
  26. import java.io.IOException;
  27. import java.io.InputStream;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30.  
  31. import static android.content.ContentValues.TAG;
  32.  
  33. public class MainActivity extends Activity {
  34.  
  35.     Cursor cursor;
  36.     ArrayList<String> vCard ;
  37.     String vfile;
  38.  
  39.     @Override
  40.     protected void onCreate(Bundle savedInstanceState) {
  41.         super.onCreate(savedInstanceState);
  42.         setContentView(R.layout.activity_main);
  43.     }
  44.  
  45.     @Override
  46.     protected void onStart() {
  47.         super.onStart();
  48.  
  49.         shoro();
  50.     }
  51.  
  52.     @Override
  53.     public boolean onCreateOptionsMenu(Menu menu) {
  54.         // Inflate the menu; this adds items to the action bar if it is present.
  55.         getMenuInflater().inflate(R.menu.menu_main, menu);
  56.         return true;
  57.     }
  58.  
  59.     public  boolean isStoragePermissionGranted() {
  60.         if (Build.VERSION.SDK_INT >= 23) {
  61.  
  62.             Log.v("kapil","Permission is granted 1 "+checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE));
  63.             Log.v("kapil","Permission is granted 2 "+checkSelfPermission(android.Manifest.permission.WRITE_CONTACTS));
  64.             Log.v("kapil","Permission is granted 3 "+checkSelfPermission(android.Manifest.permission.READ_CONTACTS));
  65.  
  66.  
  67.             if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
  68.                     == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.WRITE_CONTACTS)
  69.                     == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.READ_CONTACTS)
  70.                     == PackageManager.PERMISSION_GRANTED) {
  71.                 Log.v(TAG,"Permission is granted");
  72.                 return true;
  73.             } else {
  74.  
  75.                 Log.v(TAG,"Permission is revoked");
  76.                 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_CONTACTS, Manifest.permission.READ_CONTACTS}, 1);
  77.                 return false;
  78.             }
  79.         }
  80.         else { //permission is automatically granted on sdk<23 upon installation
  81.             Log.v(TAG,"Permission is granted");
  82.             return true;
  83.         }
  84.     }
  85.  
  86.     @Override
  87.     public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
  88.         switch (requestCode) {
  89.             case 0:
  90.                 boolean isPerpermissionForAllGranted = false;
  91.                 if (grantResults.length > 0 && permissions.length==grantResults.length) {
  92.                     for (int i = 0; i < permissions.length; i++){
  93.                         if (grantResults[i] == PackageManager.PERMISSION_GRANTED){
  94.                             isPerpermissionForAllGranted=true;
  95.                         }else{
  96.                             isPerpermissionForAllGranted=false;
  97.                         }
  98.                     }
  99.  
  100.                     Log.e("value", "Permission Granted, Now you can use local drive .");
  101.                 } else {
  102.                     isPerpermissionForAllGranted=true;
  103.                     Log.e("value", "Permission Denied, You cannot use local drive .");
  104.                 }
  105.                 if(isPerpermissionForAllGranted){
  106.                     shoro();
  107.                 }
  108.                 break;
  109.         }
  110.     }
  111.     public void shoro(){
  112.        boolean isPermissionGiven =  isStoragePermissionGranted();
  113.        Toast.makeText(this,"ok2",Toast.LENGTH_SHORT).show();
  114.         if (isPermissionGiven){
  115.             vfile = "Contacts" + "_" + System.currentTimeMillis()+".vcf";
  116.             vCard = new ArrayList<String>();
  117.             cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
  118.             if(cursor!=null&&cursor.getCount()>0)
  119.             {
  120.                 Toast.makeText(this,"ok3",Toast.LENGTH_SHORT).show();
  121.                 cursor.moveToFirst();
  122.                 for(int i =0;i<cursor.getCount();i++)
  123.                 {
  124.                     try {
  125.                         get(cursor);
  126.                     } catch (Exception e){
  127.                         e.printStackTrace();
  128.                     }
  129.  
  130.                     Log.d("TAG", "Contact "+(i+1)+"VcF String is"+vCard.get(i));
  131.                     cursor.moveToNext();
  132.                 }
  133.  
  134.             }
  135.             else
  136.             {
  137.                 Log.d("TAG", "No Contacts in Your Phone");
  138.             }
  139.         }
  140.  
  141.    }
  142.  
  143.  
  144.     public byte[] read(File file) throws IOException {
  145.  
  146.         byte[] buffer = new byte[(int) file.length()];
  147.         InputStream ios = null;
  148.         try {
  149.             ios = new FileInputStream(file);
  150.             if (ios.read(buffer) == -1) {
  151.                 throw new IOException(
  152.                         "EOF reached while trying to read the whole file");
  153.             }
  154.         } finally {
  155.             try {
  156.                 if (ios != null)
  157.                     ios.close();
  158.             } catch (IOException e) {
  159.             }
  160.         }
  161.         return buffer;
  162.     }
  163.  
  164.  
  165.     public void get(Cursor cursor) throws IOException {
  166.         Toast.makeText(this,"ok4",Toast.LENGTH_SHORT).show();
  167.  
  168.         String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
  169.         Uri vCardUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
  170.         AssetFileDescriptor assetFileDescriptor;
  171.         String vcardstring="";
  172.         if (Build.VERSION.SDK_INT >= 24) {
  173.  
  174.             FileInputStream inputStream=null;
  175.             byte[] buffer = new byte[4096];
  176.             ByteArrayOutputStream ous = null;
  177.             try {
  178.                 assetFileDescriptor = this.getContentResolver().openAssetFileDescriptor(vCardUri, "r");
  179.  
  180.                 if (assetFileDescriptor != null) {
  181.                     ous = new ByteArrayOutputStream();
  182.                     int read = 0;
  183.                     inputStream = assetFileDescriptor.createInputStream();
  184.                     while ((read = inputStream.read(buffer)) != -1) {
  185.                         ous.write(buffer, 0, read);
  186.                     }
  187.                 }
  188.             } catch (FileNotFoundException e) {
  189.                 Log.e(TAG, "Vcard for the contact " + lookupKey + " not found", e);
  190.             } catch (IOException e) {
  191.                 Log.e(TAG, "Problem creating stream from the assetFileDescriptor.", e);
  192.             }finally {
  193.                 try {
  194.                     if (ous != null)
  195.                         ous.close();
  196.                 } catch (IOException e) {
  197.                 }
  198.  
  199.                 try {
  200.                     if (inputStream != null)
  201.                         inputStream.close();
  202.                 } catch (IOException e) {
  203.                 }
  204.             }
  205.             vcardstring= new String(ous.toByteArray());
  206.  
  207.         }else{
  208.  
  209.             assetFileDescriptor = this.getContentResolver().openAssetFileDescriptor(vCardUri, "r");
  210.  
  211.             FileInputStream fis = assetFileDescriptor.createInputStream();
  212.             byte[] buf = new byte[(int) assetFileDescriptor.getDeclaredLength()];
  213.             fis.read(buf);
  214.             vcardstring= new String(buf);
  215.  
  216.         }
  217.  
  218.         vCard.add(vcardstring);
  219.         Log.i("File Kapil", "path "+getFilesDir().getAbsolutePath().toString());
  220.         String storage_path = getFilesDir().getAbsolutePath() + File.separator + vfile;
  221.         FileOutputStream mFileOutputStream = new FileOutputStream(storage_path, false);
  222.         mFileOutputStream.write(vcardstring.toString().getBytes());
  223.  
  224.     }
  225.  
  226. }
Add Comment
Please, Sign In to add comment