{"id":87290,"date":"2023-03-30T04:22:36","date_gmt":"2023-03-29T22:52:36","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=87290"},"modified":"2023-03-30T04:22:36","modified_gmt":"2023-03-29T22:52:36","slug":"android-e-gram-panchayat-services","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/","title":{"rendered":"Go digital with E-Gram Panchayat Services on Android"},"content":{"rendered":"<p>The E-Gram Panchayat Android app is an essential tool for local government administration in India. It aims to provide a platform that connects citizens and the members of Panchayat. With the help of this app, citizens can easily lodge complaints, track ongoing projects, and receive updates on upcoming events or programs.<\/p>\n<p>The app is built using Java as the primary programming language and leverages Firebase Realtime Database, Firebase Storage, Firebase Authentication, Picasso library, and Android Image cropper to provide a seamless user experience.<\/p>\n<h3>About Android E-Gram Panchayat Services App<\/h3>\n<p>The objective of this project is to provide a step-by-step guide on how to develop an E-Gram Panchayat Android app.<\/p>\n<p>The project will cover the necessary features and functionalities, including the admin and user modules, login, complaint registration, ongoing projects, upcoming events, and contact details. The app will also have an admin module to manage user details and update the latest government schemes.<\/p>\n<h3>Prerequisites for E-Gram Panchayat Services App using Android<\/h3>\n<p>To follow this project, you should have a basic understanding of Java programming, Android Studio, and Firebase. You should also have an active Firebase account and Android Studio installed on your system.<\/p>\n<p>Additionally, you should be familiar with the Android SDK, as well as the concepts of Firebase Realtime Database, Firebase Storage, Firebase Authentication, Picasso library, and Android Image cropper.<\/p>\n<h3>Download Android E-Gram Panchayat Services Project<\/h3>\n<p>Please download the source code of Android E-Gram Panchayat Services project from the following link: <a href=\"https:\/\/techvidvan.s3.amazonaws.com\/android-projects\/gram-panchayat-services.zip\"><strong>Android E-Gram Panchayat Services<\/strong><\/a><\/p>\n<h3>Steps to Create Android E-Gram Panchayat Services App using Android<\/h3>\n<p>Following are the steps for developing the Android E-Gram Panchayat Services project:<\/p>\n<h4>Step 1:<\/h4>\n<p>Creating the android project using java as the language and adding the firebase library using the inbuilt firebase library assistant in the Android Studio.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-87413 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/gram-panchayat-output-scaled.webp\" alt=\"gram panchayat output\" width=\"2560\" height=\"1552\" \/><\/p>\n<p>Also add the following dependencies in your project in the app level gradle file as shown below.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">api 'com.squareup.picasso:picasso:2.8'\n  implementation \"com.theartofdev.edmodo:android-image-cropper:2.8.+\"\n<\/pre>\n<h4><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87414\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/android-gram-panchayat-scaled.webp\" alt=\"android-gram-panchayat-output\" width=\"2560\" height=\"1552\" \/><\/h4>\n<h4>Step 2:<\/h4>\n<p>Creating Main page, Login page and Registration page layout and handling the login and registration task using the firebase authentication and firebase realtime database.<\/p>\n<h4>Main Page Layout<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87406 aligncenter\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/main-page-layout-output.webp\" alt=\"main page layout output\" width=\"654\" height=\"1346\" \/><\/p>\n<h4>Activity to handle Main Page<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ Importing the required packages\npackage com.techvidvan.grampanchayat;\n\n\/\/ Importing the required libraries\nimport androidx.appcompat.app.AppCompatActivity;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.widget.Button;\n\nimport com.google.firebase.auth.FirebaseAuth;\n\n\/\/ Creating the MainActivity class and extending it with the AppCompatActivity class\npublic class MainActivity extends AppCompatActivity {\n\n    \/\/ Creating the required variables\n    private Button register;\n    private Button login;\n    private Button admin;\n\n    \/\/ Overriding the onCreate method\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        \/\/ Setting the content view to the activity_main layout\n        setContentView(R.layout.activity_main);\n\n        \/\/ Initializing the variables with the required views\n        register = findViewById(R.id.registerButton);\n        login = findViewById(R.id.loginButton);\n        admin = findViewById(R.id.adminLoginButton);\n\n\n        \/\/ Setting the onClickListener to the register button and moving to the RegisterActivity\n        \/\/ If user clicks on the register button, the app will move to the RegisterActivity\n        register.setOnClickListener(v -&gt; {\n            startActivity(new Intent(MainActivity.this, RegisterActivity.class));\n\n        });\n\n        \/\/ Setting the onClickListener to the login button and moving to the LoginActivity\n        \/\/ If user clicks on the login button, the app will move to the LoginActivity\n        login.setOnClickListener(v -&gt; {\n            startActivity(new Intent(MainActivity.this, LoginActivity.class));\n        });\n\n        \/\/ Setting the onClickListener to the admin button and moving to the AdminLoginActivity\n        \/\/ If user clicks on the admin button, the app will move to the AdminLoginActivity\n        admin.setOnClickListener(v -&gt; {\n            startActivity(new Intent(MainActivity.this, AdminLoginActivity.class));\n        });\n\n    }\n\n\n    @Override\n    protected void onStart() {\n        super.onStart();\n\n        \/\/ Checking if the user is already logged in\n        \/\/ If the user is already logged in, the app will move to the HomeActivity\n        if(FirebaseAuth.getInstance().getCurrentUser() != null){\n            Intent intent = new Intent(MainActivity.this, HomeActivity.class);\n            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);\n            startActivity(intent);\n            finish();\n        }\n    }\n}<\/pre>\n<h4>Login Page Layout<\/h4>\n<h4><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-87407 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/log-in-output.webp\" alt=\"log in output\" width=\"666\" height=\"1304\" \/><\/h4>\n<h4>Activity to handle login<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ Importing the required packages\npackage com.techvidvan.grampanchayat;\n\n\/\/ Importing the required libraries\nimport androidx.appcompat.app.AppCompatActivity;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.view.View;\nimport android.widget.Button;\nimport android.widget.ProgressBar;\nimport android.widget.Toast;\nimport com.google.firebase.auth.FirebaseAuth;\nimport com.google.android.material.textfield.TextInputLayout;\n\n\/\/ Creating the AdminLoginActivity class and extending it with the AppCompatActivity class\npublic class AdminLoginActivity extends AppCompatActivity {\n\n    \/\/ Creating the required variables\n    private TextInputLayout adminID, adminPassword;\n    private Button id_login;\n    private ProgressBar progressBar;\n    private FirebaseAuth auth;\n\n    \/\/ Overriding the onCreate method\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        \/\/ Setting the content view to the activity_admin_login layout\n        setContentView(R.layout.activity_admin_login);\n\n        \/\/ Initializing the variables with the required views\n        id_login = findViewById(R.id.id_login);\n        adminID = findViewById(R.id.adminID);\n        adminPassword = findViewById(R.id.adminPassword);\n        progressBar = findViewById(R.id.progressBar);\n\n        \/\/ Initializing the FirebaseAuth instance\n        auth = FirebaseAuth.getInstance();\n\n        \/\/ Setting the onClickListener to the id_login button and performing the required operations\n        id_login.setOnClickListener(v -&gt; {\n            String ID = adminID.getEditText().getText().toString();\n            String Password = adminPassword.getEditText().getText().toString();\n\n            \/\/ Validating the input fields\n            if (ID.isEmpty()) {\n                adminID.setError(\"Email is required\");\n                adminID.requestFocus();\n                return;\n            } else {\n                adminID.setError(null);\n            }\n            if (Password.isEmpty()) {\n                adminPassword.setError(\"Password is required\");\n                adminPassword.requestFocus();\n                return;\n            } else {\n                adminPassword.setError(null);\n            }\n\n            \/\/ Setting the visibility of the progress bar to visible\n            progressBar.setVisibility(View.VISIBLE);\n\n            \/\/ Checking if the entered credentials are correct or not for the admin\n            if (ID.equals(\"techvidvan@gmail.com\") &amp;&amp; Password.equals(\"hello@1234\")) {\n\n                \/\/ Signing in with the entered credentials\n                auth.signInWithEmailAndPassword(\"techvidvan@gmail.com\", \"hello@1234\")\n                        .addOnCompleteListener(task -&gt; {\n\n                            \/\/ Checking if the task is successful or not\n                            if(task.isSuccessful()){\n\n                                \/\/ Setting the visibility of the progress bar to gone and starting the HomeActivity\n                                \/\/ Toast message is displayed if the entered credentials are correct\n                                progressBar.setVisibility(View.GONE);\n                                Intent intent = new Intent(AdminLoginActivity.this, HomeActivity.class);\n\n                                Toast.makeText(getApplicationContext(), \"Login Successful\", Toast.LENGTH_SHORT).show();\n                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);\n                                startActivity(intent);\n                                finish();\n\n                            }\n                        });\n            } else {\n\n                \/\/ Setting the visibility of the progress bar to gone and displaying the error message\n                \/\/ if the entered credentials are incorrect\n                Toast.makeText(AdminLoginActivity.this, \"Invalid Credentials\", Toast.LENGTH_SHORT).show();\n                progressBar.setVisibility(View.GONE);\n            }\n\n        });\n\n    }\n}<\/pre>\n<h4>Registration Page Layout<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-87408 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/registration-output.webp\" alt=\"registration output\" width=\"660\" height=\"1334\" \/><\/p>\n<h4>Activity to handle registration<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ Importing the required packages\npackage com.techvidvan.grampanchayat;\n\n\/\/ Importing the required libraries\nimport androidx.appcompat.app.AppCompatActivity;\n\nimport java.util.Calendar;\nimport java.util.regex.Pattern;\n\nimport android.app.DatePickerDialog;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.util.Patterns;\nimport android.view.View;\nimport android.widget.Button;\nimport android.widget.ProgressBar;\nimport android.widget.RadioButton;\nimport android.widget.RadioGroup;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\nimport com.google.android.material.textfield.TextInputEditText;\nimport com.google.android.material.textfield.TextInputLayout;\nimport com.google.firebase.auth.FirebaseAuth;\nimport com.google.firebase.database.DatabaseReference;\nimport com.google.firebase.database.FirebaseDatabase;\nimport com.google.firebase.functions.FirebaseFunctions;\nimport com.techvidvan.grampanchayat.data.model.User;\n\n\n\/\/ Creating the RegisterActivity class and extending it with the AppCompatActivity class\npublic class RegisterActivity extends AppCompatActivity {\n\n    \/\/ Creating the required variables\n    private TextInputLayout tEmail, tPassword, tConfirmPassword, tName, tContact, tDateOfBirth, tAddress, tAadhar, tPincode;\n    private TextInputEditText tDOB;\n    private ProgressBar pb;\n    private Button register;\n    private TextView signIn;\n    private RadioGroup tgender;\n    private RadioButton tMale, tFemale, tOther;\n    private FirebaseDatabase database;\n    private FirebaseAuth auth;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        \n        \/\/ Setting the content view to the activity_register layout\n        setContentView(R.layout.activity_register);\n        \n        \/\/ Initializing the FirebaseAuth instance and the FirebaseDatabase instance\n        auth = FirebaseAuth.getInstance();\n        database = FirebaseDatabase.getInstance();\n        \n        \/\/ Initializing the variables with the required views\n        tEmail = (TextInputLayout) findViewById(R.id.id_emailRegister);\n        tPassword = (TextInputLayout) findViewById(R.id.id_pwdRegister);\n        tConfirmPassword = (TextInputLayout) findViewById(R.id.id_confirmpwdRegister);\n        tName = (TextInputLayout) findViewById(R.id.id_userName);\n        tContact = (TextInputLayout) findViewById(R.id.id_contactNo);\n        tDateOfBirth = (TextInputLayout) findViewById(R.id.id_dob);\n        tDOB = (TextInputEditText) findViewById(R.id.id_dob_edittext);\n        tAddress = (TextInputLayout) findViewById(R.id.id_address);\n        tAadhar = (TextInputLayout) findViewById(R.id.id_aadharno);\n        tPincode = (TextInputLayout) findViewById(R.id.id_pincode);\n        tgender = (RadioGroup) findViewById(R.id.radioGroup);\n        tMale = (RadioButton) findViewById(R.id.id_male);\n        tFemale = (RadioButton) findViewById(R.id.id_female);\n        tOther = (RadioButton) findViewById(R.id.id_other);\n        pb = (ProgressBar) findViewById(R.id.progressBar2);\n        register = (Button) findViewById(R.id.id_register);\n        signIn = (TextView) findViewById(R.id.id_signInRegister);\n        \n        \n        \/\/ Setting the onClickListener for the signIn TextView to open the LoginActivity\n        \/\/ when the user clicks on the signIn TextView\n        signIn.setOnClickListener(v -&gt; {\n            startActivity(new Intent(RegisterActivity.this, LoginActivity.class));\n        });\n        \n        \/\/ Setting the onClickListener for the tDOB TextInputEditText to open the DatePickerDialog\n        \/\/ when the user clicks on the tDOB TextInputEditText (Date of Birth)\n        tDOB.setOnClickListener(v -&gt; {\n            \n            \/\/ Creating the Calendar instance and getting the current date\n            final Calendar c = Calendar.getInstance();\n            int year = c.get(Calendar.YEAR);\n            int month = c.get(Calendar.MONTH);\n            int day = c.get(Calendar.DAY_OF_MONTH);\n            \n            \/\/ Creating the DatePickerDialog instance and setting the date to the DatePickerDialog\n            DatePickerDialog datePickerDialog = new DatePickerDialog(RegisterActivity.this, (view, year1, monthOfYear, dayOfMonth) -&gt; {\n                \/\/ Setting the date to the tDOB TextInputEditText\n                tDateOfBirth.getEditText().setText(dayOfMonth + \"-\" + (monthOfYear + 1) + \"-\" + year1);\n            }, year, month, day);\n            \n            \/\/ Showing the DatePickerDialog\n            datePickerDialog.show();\n\n        });\n        \n        \/\/ Setting the onClickListener for the register Button to register the user\n        \/\/ when the user clicks on the register Button\n        register.setOnClickListener(v -&gt; {\n            \n            \/\/ Initializing the required variables\n            String email = tEmail.getEditText().getText().toString();\n            String password = tPassword.getEditText().getText().toString();\n            String confirmPassword = tConfirmPassword.getEditText().getText().toString();\n            String name = tName.getEditText().getText().toString();\n            String contact = tContact.getEditText().getText().toString();\n            String address = tAddress.getEditText().getText().toString();\n            String aadhar = tAadhar.getEditText().getText().toString();\n            String pincode = tPincode.getEditText().getText().toString();\n            int genderID = tgender.getCheckedRadioButtonId();\n            String dateOfBirth = tDateOfBirth.getEditText().getText().toString();\n            String gender = \"\";\n            \n            \n            \/\/ Registration Validation \n            if (name.isEmpty()) {\n                tName.setError(\"Name is required\");\n                tName.requestFocus();\n                return;\n            } else {\n                tName.setError(null);\n            }\n            if (contact.isEmpty()) {\n                tContact.setError(\"Phone number is required\");\n                tContact.requestFocus();\n                return;\n            } else {\n                tContact.setError(null);\n            }\n            if (contact.length() != 10) {\n                tContact.setError(\"Enter a valid phone number\");\n                tContact.requestFocus();\n                return;\n            } else {\n                tContact.setError(null);\n            }\n            if (dateOfBirth.isEmpty()) {\n                tDateOfBirth.setError(\"Date of Birth is required\");\n                tDateOfBirth.requestFocus();\n                return;\n            } else {\n                tDateOfBirth.setError(null);\n            }\n            if (aadhar.isEmpty()) {\n                tAadhar.setError(\"Aadhar is required\");\n                tAadhar.requestFocus();\n                return;\n            } else {\n                tAadhar.setError(null);\n            }\n            if (aadhar.length() != 12) {\n                tAadhar.setError(\"Enter a valid Aadhar number\");\n                tAadhar.requestFocus();\n                return;\n            } else {\n                tAadhar.setError(null);\n            }\n            if (genderID == -1) {\n                tgender.requestFocus();\n                return;\n            }\n            if (tMale.isChecked()) {\n                gender = \"Male\";\n            } else if (tFemale.isChecked()) {\n                gender = \"Female\";\n            } else if (tOther.isChecked()) {\n                gender = \"Other\";\n            }\n            if (address.isEmpty()) {\n                tAddress.setError(\"Address is required\");\n                tAddress.requestFocus();\n                return;\n            }\n            if (pincode.isEmpty()) {\n                tPincode.setError(\"Pincode is required\");\n                tPincode.requestFocus();\n                return;\n            }\n            if (pincode.length() != 6) {\n                tPincode.setError(\"Enter a valid Pincode\");\n                tPincode.requestFocus();\n                return;\n            }\n            if (email.isEmpty()) {\n                tEmail.setError(\"Email is required\");\n                tEmail.requestFocus();\n                return;\n            }\n            Pattern pattern = Pattern.compile(\"[a-zA-Z0-9._-]+@[a-z]+\\\\.+[a-z]+\");\n            if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {\n                tEmail.setError(\"Enter a valid email\");\n                tEmail.requestFocus();\n                return;\n            }\n            if (password.isEmpty()) {\n                tPassword.setError(\"Password is required\");\n                tPassword.requestFocus();\n                return;\n            }\n            if (confirmPassword.isEmpty()) {\n                tConfirmPassword.setError(\"Confirm Password is required\");\n                tConfirmPassword.requestFocus();\n                return;\n            }\n            if (password.length() &lt; 8) {\n                tPassword.setError(\"Password should be at least 8 characters\");\n                tPassword.requestFocus();\n                return;\n            }\n            if (!password.matches(\".*[0-9].*\")) {\n                tPassword.setError(\"Password should contain at least one number\");\n                tPassword.requestFocus();\n                return;\n            }\n            if (!password.matches(\".*[a-zA-Z].*\")) {\n                tPassword.setError(\"Password should contain at least one alphabet\");\n                tPassword.requestFocus();\n                return;\n            }\n            \n            \/\/ Checking if the password and confirm password are same\n            if (password.equals(confirmPassword)) {\n                \n                \/\/ Calling the registerUser method to register the user\n                registerUser(email, password, name, aadhar, address, contact, pincode, dateOfBirth, gender);\n            } else {\n                \n                \/\/ Showing the error message if the password and confirm password are not same\n                Toast.makeText(RegisterActivity.this, \"Password and Confirm Password should be same\", Toast.LENGTH_SHORT).show();\n            }\n\n\n        });\n\n    }\n    \n    \/\/ Method to register the user in the Firebase Authentication\n    private void registerUser(String email, String password, String name, String aadhar, String address, String contact, String pincode, String dateOfBirth, String gender) {\n        pb.setVisibility(View.VISIBLE);\n        \n        \/\/ Creating the user in the Firebase Authentication\n        auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(task -&gt; {\n            if (task.isSuccessful()) {\n                \n                \/\/ Creating the user in the Firebase Realtime Database if the user is created in the Firebase Authentication\n                User user = new User(email, name, aadhar, address, contact, pincode, dateOfBirth, gender);\n                FirebaseDatabase.getInstance().getReference(\"Users\").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(user).addOnCompleteListener(task1 -&gt; {\n                    if (task1.isSuccessful()) {\n                        \n                        \/\/ Showing the success message and redirecting the user to the login page\n                        pb.setVisibility(View.GONE);\n                        Toast.makeText(RegisterActivity.this, \"User has been registered successfully!\", Toast.LENGTH_LONG).show();\n\n                        Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);\n                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);\n                        startActivity(intent);\n                        finish();\n                    }\n                    \n                });\n            }\n            \n        }).addOnFailureListener(e -&gt; {\n            \n            \/\/ Showing the error message if the user is not created in the Firebase Authentication\n            pb.setVisibility(View.GONE);\n            Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();\n        });\n    }\n}<\/pre>\n<h4>Admin Login Page Layout<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-87410 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/admin-login-page-output.webp\" alt=\"admin login page output\" width=\"654\" height=\"1274\" \/><\/p>\n<h4>Activity to handle Admin login<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ This class is used to check whether the user is admin or not\n\n\/\/ Importing the required packages\npackage com.techvidvan.grampanchayat.data.model;\n\n\/\/ Creating the Admin class\npublic class Admin {\n  \n   \/\/ Creating the required variables and assigning the admin UID and email\n   String adminUid = \"HJj7hgcA6xZFgWdFQAz61vGVYsk1\";\n   String adminMail = \"techvidvan@gmail.com\";\n  \n   \/\/ Creating the isAdminUsingUID method to check\n   \/\/ whether the user is admin or not using the UID\n   public boolean isAdminUsingUID(String uid){\n       if (adminUid.equals(uid)){\n           return true;\n       }\n       return false;\n   }\n  \n   \/\/ Creating the isAdminUsingMail method to check\n   \/\/ whether the user is admin or not using the email\n   public boolean isAdminUsingMail(String mail){\n       if (adminMail.equals(mail)){\n           return true;\n       }\n       return false;\n   }\n\n\n}<\/pre>\n<h4>Step 4:<\/h4>\n<p>Creating Navigation Drawer Layout using the Android Studio inbuilt activity creator and customizing it according to the needs. The activity for the Navigation Drawer is named <strong>HomeActivity.java.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87416 alignnone\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/android-e-gram-panchayat-output-scaled.webp\" alt=\"android e gram panchayat output\" width=\"2560\" height=\"1547\" \/><\/p>\n<p>After customizing the Drawer layout it will look like this<\/p>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87417 alignnone\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/android-e-gram-output-scaled.webp\" alt=\"android e gram output\" width=\"2560\" height=\"1547\" \/><\/h3>\n<h3>HomeActivity.java<\/h3>\n<p>This is an Android app&#8217;s main activity that sets up the home screen. The important parts of the code include:<\/p>\n<ul>\n<li>Importing required packages and libraries.<\/li>\n<li>Initializing the binding variable and setting the content view.<\/li>\n<li>Setting up the toolbar as the action bar and the navigation controller to the navigation view.<\/li>\n<li>Implementing the menu, including a logout button that opens a confirmation dialog box and signs the user out of the app.<\/li>\n<li>Checking if the user is verified and redirecting them to the login activity if they are not.<\/li>\n<li>Retrieving the user&#8217;s profile image from Firebase Storage and displaying it in the navigation drawer.<\/li>\n<li>Hiding menu options according to the user Role.<\/li>\n<\/ul>\n<h3>Code for the HomeActivity.java<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ This is the main activity of the app. It is the home screen of the app.\n\n\/\/ Importing all the required packages\npackage com.techvidvan.grampanchayat;\n\n\/\/ Importing all the required libraries\nimport android.app.AlertDialog;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.view.MenuItem;\nimport android.view.View;\nimport android.view.Menu;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.google.android.material.snackbar.Snackbar;\nimport com.google.android.material.navigation.NavigationView;\nimport com.google.firebase.auth.FirebaseAuth;\nimport com.google.firebase.auth.FirebaseUser;\nimport com.google.firebase.database.DataSnapshot;\nimport com.google.firebase.database.DatabaseError;\nimport com.google.firebase.database.DatabaseReference;\nimport com.google.firebase.database.FirebaseDatabase;\nimport com.google.firebase.database.ValueEventListener;\nimport com.google.firebase.storage.FirebaseStorage;\nimport com.google.firebase.storage.StorageReference;\nimport com.squareup.picasso.Picasso;\nimport com.techvidvan.grampanchayat.data.model.Admin;\nimport com.techvidvan.grampanchayat.databinding.ActivityHomeBinding;\n\nimport androidx.annotation.NonNull;\nimport androidx.navigation.NavController;\nimport androidx.navigation.Navigation;\nimport androidx.navigation.ui.AppBarConfiguration;\nimport androidx.navigation.ui.NavigationUI;\nimport androidx.drawerlayout.widget.DrawerLayout;\nimport androidx.appcompat.app.AppCompatActivity;\n\n\/\/ HomeActivity class which extends AppCompatActivity\npublic class HomeActivity extends AppCompatActivity {\n\n    \/\/ Declaring all the variables\n    private AppBarConfiguration mAppBarConfiguration;\n    private ActivityHomeBinding binding;\n\n    StorageReference storageReference;\n\n\n    \/\/ onCreate method which is called when the activity is created\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        \/\/ Initializing the binding variable\n        binding = ActivityHomeBinding.inflate(getLayoutInflater());\n\n        \/\/ Setting the content view\n        setContentView(binding.getRoot());\n\n        \/\/ Setting the toolbar as the action bar\n        setSupportActionBar(binding.appBarHome.toolbar);\n        DrawerLayout drawer = binding.drawerLayout;\n        NavigationView navigationView = binding.navView;\n\n        \/\/ Passing each menu ID as a set of Ids because each menu should be considered as top level destinations.\n        mAppBarConfiguration = new AppBarConfiguration.Builder(\n                R.id.nav_home,R.id.nav_profile, R.id.nav_edit_profile, R.id.nav_create_news, R.id.nav_file_complaint, R.id.nav_view_your_complaint, R.id.nav_pending_complaints, R.id.nav_view_all_complaints_resolved, R.id.nav_view_all_complaints_rejected)\n                .setOpenableLayout(drawer)\n                .build();\n\n        \/\/ Setting the navigation controller to the navigation view\n        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_home);\n        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);\n        NavigationUI.setupWithNavController(navigationView, navController);\n\n\n    }\n\n    \/\/ onCreateOptionsMenu method which is called when the options menu is created\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        \/\/ Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.home, menu);\n\n        \/\/ Setting the on click listener for the logout button\n        menu.getItem(0).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {\n            @Override\n            public boolean onMenuItemClick(MenuItem item) {\n\n                \/\/ Creating an alert dialog box to confirm the logout\n                AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);\n                builder.setTitle(\"Confirm\");\n                builder.setMessage(\"Are you sure? You want to logout?\");\n                builder.setPositiveButton(\"YES\", (dialog, which) -&gt; {\n\n                    \/\/ Signing out the user and redirecting to the login activity\n                    \/\/ if the user clicks on the yes button\n                    FirebaseAuth.getInstance().signOut();\n\n                    \/\/ Redirecting to the login activity\n                    startActivity(new Intent(HomeActivity.this, LoginActivity.class));\n                    finish();\n\n                    \/\/ Dismissing the dialog box\n                    dialog.dismiss();\n                });\n\n                \/\/ If the user clicks on the no button, the dialog box is dismissed\n                builder.setNegativeButton(\"NO\", (dialog, which) -&gt; {\n                    dialog.dismiss();\n                });\n\n                \/\/ Creating and showing the alert dialog box\n                AlertDialog alert = builder.create();\n                alert.show();\n\n                return false;\n            }\n        } );\n\n        return true;\n    }\n\n    \/\/ onSupportNavigateUp method which is called when the navigation up button is clicked\n    @Override\n    public boolean onSupportNavigateUp() {\n        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_home);\n        return NavigationUI.navigateUp(navController, mAppBarConfiguration)\n                || super.onSupportNavigateUp();\n    }\n\n    \/\/ onStart method which is called when the activity is started\n    \/\/ We are checking if the user is verified or not in this method\n    @Override\n    protected void onStart() {\n        super.onStart();\n        NavigationView navigationView = binding.navView;\n\n        \/\/ Getting the current user from the firebase authentication\n        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();\n\n        \/\/ If the user is not verified, the user is redirected to the login activity\n        if(!user.isEmailVerified()){\n            startActivity(new Intent(HomeActivity.this, LoginActivity.class));\n            finish();\n        }\n\n        \/\/retrieve user profile image from firebase storage \"profileImages\" node using user id\n        View headerView = navigationView.getHeaderView(0);\n        ImageView id_profileImage = (ImageView) headerView.findViewById(R.id.profile_image);\n\n        \/\/ Initializing the firebase authentication and storage reference\n        FirebaseAuth  auth = FirebaseAuth.getInstance();\n        storageReference = FirebaseStorage.getInstance().getReference();\n\n        \/\/ Getting the download url of the profile image\n        StorageReference profileRef = storageReference.child(\"profileImages\/\" + auth.getCurrentUser().getUid());\n\n        \/\/ Setting the profile image using the picasso library\n        profileRef.getDownloadUrl().addOnSuccessListener(uri -&gt; {\n            Picasso.get().load(uri).into(id_profileImage);\n        });\n\n        \/\/ Retrieving the user name and email from the firebase realtime database\n        final FirebaseDatabase database = FirebaseDatabase.getInstance();\n        DatabaseReference db = database.getReference().child(\"Users\").child(user.getUid());\n        db.addValueEventListener(new ValueEventListener() {\n            @Override\n            public void onDataChange(@NonNull DataSnapshot snapshot) {\n\n                \/\/ Getting the user name and email from the firebase realtime database\n                String name = snapshot.child(\"name\").getValue().toString();\n                String email = snapshot.child(\"email\").getValue().toString();\n\n                \/\/ Setting the user name and email in the navigation view header\n                View headerView = navigationView.getHeaderView(0);\n                TextView navEmail = (TextView) headerView.findViewById(R.id.mail);\n                TextView navUsername = (TextView) headerView.findViewById(R.id.name);\n                navUsername.setText(name);\n                navEmail.setText(email);\n\n            }\n\n            \/\/ If the data is not retrieved, the onCancelled method is called\n            @Override\n            public void onCancelled(@NonNull DatabaseError error) {\n\n            }\n        });\n\n        \/\/ Checking if the user is an admin or not and displaying the menu items accordingly\n        Admin currentUser = new Admin();\n        Menu nav_Menu = navigationView.getMenu();\n\n        if(currentUser.isAdminUsingUID(user.getUid())){\n\n            \/\/ If the user is an admin, the following menu items are displayed\n            nav_Menu.findItem(R.id.nav_pending_complaints).setVisible(true);\n            nav_Menu.findItem(R.id.nav_view_all_complaints_resolved).setVisible(true);\n            nav_Menu.findItem(R.id.nav_view_all_complaints_rejected).setVisible(true);\n            nav_Menu.findItem(R.id.nav_create_news).setVisible(true);\n\n            \/\/ If the user is an admin, the following menu items are hidden\n            nav_Menu.findItem(R.id.nav_file_complaint).setVisible(false);\n            nav_Menu.findItem(R.id.nav_view_your_complaint).setVisible(false);\n        } else {\n\n            \/\/ If the user is not an admin, the following menu items are displayed\n            nav_Menu.findItem(R.id.nav_pending_complaints).setVisible(false);\n            nav_Menu.findItem(R.id.nav_view_all_complaints_resolved).setVisible(false);\n            nav_Menu.findItem(R.id.nav_view_all_complaints_rejected).setVisible(false);\n            nav_Menu.findItem(R.id.nav_create_news).setVisible(false);\n\n            \/\/ If the user is not an admin, the following menu items are hidden\n            nav_Menu.findItem(R.id.nav_file_complaint).setVisible(true);\n            nav_Menu.findItem(R.id.nav_view_your_complaint).setVisible(true);\n        }\n\n    }\n}<\/pre>\n<p>After doing this, Navigation Drawer will look something like this to the Admin and normal User.<\/p>\n<h4>Admin Navigation Drawer View<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87418 alignnone\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/navigation-output.webp\" alt=\"navigation output\" width=\"1321\" height=\"1356\" \/><\/p>\n<h4>Normal user Navigation Drawer View<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87419 aligncenter\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/navigation-drawer-output.webp\" alt=\"navigation drawer output\" width=\"646\" height=\"1360\" \/><\/p>\n<h4>Step 5:<\/h4>\n<p>Now, We will customize the fragments layouts that are in the drawer.<\/p>\n<p>1.<strong> fragment_home.xml:<\/strong> It is the home fragment where users will see the Upcoming projects and Services. If the user clicks on the item. It will Show them a full news article. Newly created news will be shown at the top of the list.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87420 aligncenter\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/fragement-output.webp\" alt=\"fragement output\" width=\"659\" height=\"1368\" \/><\/p>\n<p>2. <strong>fragment_news_read.xml:<\/strong> This fragment will be displayed when the user clicks on the Article on the home page. If the current user is admin, it will show the option to delete the news from the database.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87421 aligncenter\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/fragement-news-output.webp\" alt=\"fragement news output\" width=\"1282\" height=\"1356\" \/><\/p>\n<p>3. <strong>Fragment_create_news.xml:<\/strong> This fragment will allow the admin to Create a news about upcoming projects and Services and how the users can approach it. This fragment will only be visible to the Admin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-87423 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/fragement-create-output.webp\" alt=\"fragement create output\" width=\"1342\" height=\"1348\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87424 aligncenter\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/create-new-output.webp\" alt=\"create new output\" width=\"656\" height=\"1348\" \/><\/p>\n<p>4. <strong>Fragment_profile.xml:<\/strong> This fragment will show the user\/admin its profile details like, name, address, profile photo, contact number, etc.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-87426 aligncenter\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/fragement-profile-output.webp\" alt=\"fragement profile output\" width=\"664\" height=\"1324\" \/><\/p>\n<p>5. <strong>Fragment_edit_profile.xml:<\/strong> This fragment will allow the user\/admin to edit their profile details like profile image, name, date of birth, etc.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87427\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/fragement-edit-output.webp\" alt=\"fragement edit output\" width=\"657\" height=\"1352\" \/><\/p>\n<p>6. <strong>Fragment_file_complaint.xml:<\/strong> This fragment will allow the user to file a complaint. It will only be visible to the normal user.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87428\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/file-complaint-output.webp\" alt=\"file complaint output\" width=\"660\" height=\"1332\" \/><\/p>\n<p>7.<strong> Fragment_user_complaint.xml:<\/strong> This fragment will show the user their previous complaint details and its status and feedback from the admin. Newly created complaints will be shown at the top of the list.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87429\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/user-complaint-output.webp\" alt=\"user complaint output\" width=\"656\" height=\"1348\" \/><\/p>\n<p>8. <strong>Fragment_pending_complaint.xml:<\/strong> This fragment will show the admin all the pending complaints that are yet to be resolved.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87430\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/pending-complaint-output.webp\" alt=\"pending complaint output\" width=\"680\" height=\"1382\" \/><\/p>\n<p>9. <strong>Fragment_resolved_complaint.xml:<\/strong> This fragment will show the admin all the resolved complaints so far.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87431\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/resolved-complaint-output.webp\" alt=\"resolved complaint output\" width=\"676\" height=\"1378\" \/><\/p>\n<p>10. <strong>Fragment_rejected_complaint.xml:<\/strong> This fragment will show the admin all the rejected complaints.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87432\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/reject-complaint-output.webp\" alt=\"reject complaint output\" width=\"676\" height=\"1382\" \/><\/p>\n<p>11. <strong>Fragment_read_complaint.xml:<\/strong> If user\/admin clicks on any complaints in the lists of complaints, they will be able to read the complaint. If the user is Admin, it will show them the ability to respond to the complaint by setting its status and providing feedback.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87433\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/read-complaint-output.webp\" alt=\"read complaint output\" width=\"2189\" height=\"2120\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87434\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/fragement-read-output.webp\" alt=\"fragement read output\" width=\"652\" height=\"852\" \/><\/p>\n<p>After Completing this, the file structure will look like this<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87435\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/e-gram-panchayat-output-scaled.webp\" alt=\"e gram panchayat output\" width=\"2560\" height=\"1557\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87439\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/03\/android-e-gram-panchayat-project-output-1-scaled.webp\" alt=\"android e gram panchayat project output\" width=\"2560\" height=\"1557\" \/><\/p>\n<p>Now, gram panchayat app is ready use.<\/p>\n<h3>Summary<\/h3>\n<p>The E-Gram Panchayat Android app is a must-have tool for local government administration in India. It provides a platform that connects citizens and members of Panchayat, enabling them to communicate effectively.<\/p>\n<p>This project aims to provide a comprehensive guide on developing this app, leveraging Java as the primary programming language, Firebase Realtime Database, Firebase Storage, Firebase Authentication, Picasso library, and Android Image cropper. With this project, you will be able to develop an app that can lodge complaints, track ongoing projects, provide updates on upcoming events, and manage user details.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The E-Gram Panchayat Android app is an essential tool for local government administration in India. It aims to provide a platform that connects citizens and the members of Panchayat. With the help of this&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":87412,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2791],"tags":[4908,4909,3873,4910,3007,4911,4912],"class_list":["post-87290","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","tag-android-e-gram-panchayat-services","tag-android-e-gram-panchayat-services-project","tag-android-project","tag-android-project-for-practice","tag-android-project-ideas","tag-e-gram-panchayat-services","tag-e-gram-panchayat-services-project"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Go digital with E-Gram Panchayat Services on Android - TechVidvan<\/title>\n<meta name=\"description\" content=\"Revolutionize your E-Gram Panchayat experience with our Android E-Gram Panchayat Services. Say goodbye to paperwork and hello to efficiency.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Go digital with E-Gram Panchayat Services on Android - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"Revolutionize your E-Gram Panchayat experience with our Android E-Gram Panchayat Services. Say goodbye to paperwork and hello to efficiency.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-29T22:52:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/03\/android-e-project-gram-panchayat-services.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Go digital with E-Gram Panchayat Services on Android - TechVidvan","description":"Revolutionize your E-Gram Panchayat experience with our Android E-Gram Panchayat Services. Say goodbye to paperwork and hello to efficiency.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/","og_locale":"en_US","og_type":"article","og_title":"Go digital with E-Gram Panchayat Services on Android - TechVidvan","og_description":"Revolutionize your E-Gram Panchayat experience with our Android E-Gram Panchayat Services. Say goodbye to paperwork and hello to efficiency.","og_url":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2023-03-29T22:52:36+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/03\/android-e-project-gram-panchayat-services.webp","type":"image\/webp"}],"author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"Go digital with E-Gram Panchayat Services on Android","datePublished":"2023-03-29T22:52:36+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/"},"wordCount":994,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/03\/android-e-project-gram-panchayat-services.webp","keywords":["android e-gram panchayat services","android e-gram panchayat services project","android project","android project for practice","android project ideas","e-gram panchayat services","e-gram panchayat services project"],"articleSection":["Android Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/","url":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/","name":"Go digital with E-Gram Panchayat Services on Android - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/03\/android-e-project-gram-panchayat-services.webp","datePublished":"2023-03-29T22:52:36+00:00","description":"Revolutionize your E-Gram Panchayat experience with our Android E-Gram Panchayat Services. Say goodbye to paperwork and hello to efficiency.","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#primaryimage","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/03\/android-e-project-gram-panchayat-services.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/03\/android-e-project-gram-panchayat-services.webp","width":1200,"height":628,"caption":"android e project gram panchayat services"},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/android-e-gram-panchayat-services\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"Go digital with E-Gram Panchayat Services on Android"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=87290"}],"version-history":[{"count":0,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87290\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media\/87412"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=87290"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=87290"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=87290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}