Wednesday 8 November 2017

Content Provider

                           Content Provider

 

Content provider is used to manage and Access to a archive of data.content provider is part of an android application.mostly it's used by  other applications.
which access the provider using a provider client object.providers and provider clients offer a consistency ,common interface to data and also it will handle inter process communication and secure the data.

The following topic will describes the basics :

1.How content provider will work

2. How to retrieve data from a content provider.

3.how to insert,update,delete in a content provider. 

 Accessing a provider:

An application accesses the data from content provider with using content resolver client object. The content resolver methods will provide the basic functions like insert.

The content resolver object in the client applications process,and content provider object in the application that owns the provider automatically it will handle inter communication process.content provider also act as an abstraction layer between its repository of data and the external appearance of data as tables.

To access the content provider to your application you want to  request permissions in the manifest file.

 <uses-permission android:name="android.permission.READ_USER_DICTIONARY"> 

 To Access contact using content provider to your application you want to request permission in the Manifest file.

<uses-permission android:name="android.permission.READ_CONTACTS">
 
Example code:
 
Are you using Marshmallow you should write the code for RuntimePremission
 
MainActivity:
 


import android.Manifest;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private ContentResolver cv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void readContact(View view) {
        if(ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.READ_CONTACTS)
                != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.READ_CONTACTS},
                    88);
        }else{//already have access
            contactRead();
        }

    }
    public void contactRead(){
        cv=getContentResolver();

        Uri uri= ContactsContract.Contacts.CONTENT_URI;
        Cursor c=cv.query(uri,null,null,null,
                ContactsContract.Contacts.DISPLAY_NAME);

        c.moveToFirst();
        do{
            Toast.makeText(MainActivity.this,c.getString(c.
                            getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)),
                    Toast.LENGTH_LONG).show();
        }while (c.moveToNext());

    }
    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode,
                permissions, grantResults);
        if(requestCode == 88){
            if(grantResults.length > 0 &&
                    grantResults[0] == PackageManager.PERMISSION_GRANTED){
                contactRead();
            }else{//permission denied
                Toast.makeText(MainActivity.this, "sorry Permission denied",
                        Toast.LENGTH_LONG).show();
            }
        }
    }

}
 
 
activity_main:
 
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.falgee.contactprovidernewversion.MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:onClick="readContact"
        tools:layout_editor_absoluteX="137dp"
        tools:layout_editor_absoluteY="205dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginTop="205dp"
        android:layout_marginStart="137dp" />
</android.support.constraint.ConstraintLayout>
 
ManiFest:
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.falgee.contactprovidernewversion">
    <uses-permission android:name="android.permission.READ_CONTACTS">

    </uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
 
 
 
 
  

 

 

 

 



0 comments:

Post a Comment