How to store mac address - android-studio

I'm writing an App with login and register, it works but I want to add something. Is it possible, when a user register his datas, to get directly from his phone the Mac Address and store it together the other datas?
For example, he has to insert name, user, password and email, when he clicks on register in the database there are all this datas and the macaddress of his phone too.
This is my RegisterActivity.java:
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
* Created by amardeep on 10/26/2017.
*/
public class RegisterActivity extends AppCompatActivity {
//Declaration EditTexts
EditText editTextUserName;
EditText editTextEmail;
EditText editTextPassword;
//Declaration TextInputLayout
TextInputLayout textInputLayoutUserName;
TextInputLayout textInputLayoutEmail;
TextInputLayout textInputLayoutPassword;
//Declaration Button
Button buttonRegister;
//Declaration SqliteHelper
SqliteHelper sqliteHelper;
#Override
protected void onCreate(#Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
sqliteHelper = new SqliteHelper(this);
initTextViewLogin();
initViews();
buttonRegister.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
if (validate()) {
String UserName = editTextUserName.getText().toString();
String Email = editTextEmail.getText().toString();
String Password = editTextPassword.getText().toString();
//Check in the database is there any user associated with this email
if (!sqliteHelper.isEmailExists(Email)) {
//Email does not exist now add new user to database
sqliteHelper.addUser(new User(null, UserName, Email, Password));
Snackbar.make(buttonRegister, "User created successfully! Please Login ", Snackbar.LENGTH_LONG).show();
new Handler().postDelayed(new Runnable() {
#Override
public void run() {
finish();
}
}, Snackbar.LENGTH_LONG);
}else {
//Email exists with email input provided so show error user already exist
Snackbar.make(buttonRegister, "User already exists with same email ", Snackbar.LENGTH_LONG).show();
}
}
}
});
}
//this method used to set Login TextView click event
private void initTextViewLogin() {
TextView textViewLogin = (TextView) findViewById(R.id.textViewLogin);
textViewLogin.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
finish();
}
});
}
//this method is used to connect XML views to its Objects
private void initViews() {
editTextEmail = (EditText) findViewById(R.id.editTextEmail);
editTextPassword = (EditText) findViewById(R.id.editTextPassword);
editTextUserName = (EditText) findViewById(R.id.editTextUserName);
textInputLayoutEmail = (TextInputLayout) findViewById(R.id.textInputLayoutEmail);
textInputLayoutPassword = (TextInputLayout) findViewById(R.id.textInputLayoutPassword);
textInputLayoutUserName = (TextInputLayout) findViewById(R.id.textInputLayoutUserName);
buttonRegister = (Button) findViewById(R.id.buttonRegister);
}
//This method is used to validate input given by user
public boolean validate() {
boolean valid = false;
//Get values from EditText fields
String UserName = editTextUserName.getText().toString();
String Email = editTextEmail.getText().toString();
String Password = editTextPassword.getText().toString();
//Handling validation for UserName field
if (UserName.isEmpty()) {
valid = false;
textInputLayoutUserName.setError("Please enter valid username!");
} else {
if (UserName.length() > 5) {
valid = true;
textInputLayoutUserName.setError(null);
} else {
valid = false;
textInputLayoutUserName.setError("Username is to short!");
}
}
//Handling validation for Email field
if (!android.util.Patterns.EMAIL_ADDRESS.matcher(Email).matches()) {
valid = false;
textInputLayoutEmail.setError("Please enter valid email!");
} else {
valid = true;
textInputLayoutEmail.setError(null);
}
//Handling validation for Password field
if (Password.isEmpty()) {
valid = false;
textInputLayoutPassword.setError("Please enter valid password!");
} else {
if (Password.length() > 5) {
valid = true;
textInputLayoutPassword.setError(null);
} else {
valid = false;
textInputLayoutPassword.setError("Password is to short!");
}
}
return valid;
}
}
Thank you very much!

Related

Upload Text and Multiple Images to Firebase - Android Studio

How do you upload multiple images to firebase with a text file? I can upload the one image file find but once I add the second fileRef for the second image in the saveVehicle area it doesn't upload anything at all.
I have tried putting an if statement before the Storage Reference and still nothing.
EDIT: In the "private void saveVehicle()" section when I put in the code for "fileRef2" to save a secondary picture nothing happens. It does not upload to Firebase. Without "fileRef2" code the first image and texts saves fine.
How do I save multiple images into one file?
Here is my code:
'''
package com.example.a7kvehicleinventoryapp;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.snackbar.Snackbar;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.util.ArrayList;
import java.util.UUID;
public class EditorActivity extends AppCompatActivity {
/** EditText field to enter the vehicle attributes */
private EditText mNameEditText;
private ImageButton mPic1Image;
private ImageButton mPic2Image;
private ImageButton mPic3Image;
private ImageButton mPic4Image;
private Uri mImageUri1;
private Uri mImageUri2;
private Uri mImageUri3;
private Uri mImageUri4;
private FirebaseDatabase db = FirebaseDatabase.getInstance();
private DatabaseReference root = db.getReference("Vehicles");
private FirebaseStorage mStorage = FirebaseStorage.getInstance();
private StorageReference mStorageReference = mStorage.getReference();
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_editor);
// Find all relevant views that we will need to read user input from
mNameEditText = findViewById(R.id.edit_vehicle_customer_name);
mPic1Image = findViewById(R.id.edit_vehicle_pic_1);
mPic2Image = findViewById(R.id.edit_vehicle_pic_2);
mPic3Image = findViewById(R.id.edit_vehicle_pic_3);
mPic4Image = findViewById(R.id.edit_vehicle_pic_4);
mPic1Image.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
choosePicture1();
}
});
mPic2Image.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
choosePicture2();
}
});
mPic3Image.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
choosePicture3();
}
});
mPic4Image.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
choosePicture4();
}
});
}
private void choosePicture1() {
Intent galleryIntent = new Intent();
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, 1);
}
private void choosePicture2() {
Intent galleryIntent = new Intent();
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, 2);
}
private void choosePicture3() {
Intent galleryIntent = new Intent();
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, 3);
}
private void choosePicture4() {
Intent galleryIntent = new Intent();
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, 4);
}
#Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
mImageUri1 = data.getData();
mPic1Image.setImageURI(mImageUri1);
}
if(requestCode == 2 && resultCode == RESULT_OK && data != null && data.getData() != null) {
mImageUri2 = data.getData();
mPic2Image.setImageURI(mImageUri2);
}
if(requestCode == 3 && resultCode == RESULT_OK && data != null && data.getData() != null) {
mImageUri3 = data.getData();
mPic3Image.setImageURI(mImageUri3);
}
if(requestCode == 4 && resultCode == RESULT_OK && data != null && data.getData() != null) {
mImageUri4 = data.getData();
mPic4Image.setImageURI(mImageUri4);
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu options from the res/menu/menu_editor.xml file.
// This adds menu items to the app bar.
getMenuInflater().inflate(R.menu.menu_editor, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// User clicked on a menu option in the app bar overflow menu
switch (item.getItemId()) {
// Respond to a click on the "Save" menu option
case R.id.action_save:
// Save vehicle to database
saveVehicle();
// Exit activity start new
startActivity(new Intent(EditorActivity.this, InventoryActivity.class));
return true;
// Respond to a click on the "Delete" menu option
case R.id.action_delete:
// Pop up confirmation dialog for deletion
//showDeleteConfirmationDialog();
return true;
// Respond to a click on the "Delete" menu option
case R.id.action_email:
// Pop up confirmation dialog for deletion
//showEmailConfirmationDialog();
return true;
// Respond to a click on the "Up" arrow button in the app bar
case android.R.id.home:
NavUtils.navigateUpFromSameTask(EditorActivity.this);
return true;
}
return super.onOptionsItemSelected(item);
}
private void saveVehicle() {
final ProgressDialog pd = new ProgressDialog(this);
pd.setTitle("Uploading");
pd.show();
final String nameString = mNameEditText.getText().toString().trim();
final DatabaseReference db = root.push();
StorageReference fileRef1 = mStorageReference.child("Images").child(mImageUri1.getLastPathSegment());
StorageReference fileRef2 = mStorageReference.child("Images").child(mImageUri2.getLastPathSegment());
fileRef1.putFile(mImageUri1).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
#Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
fileRef1.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
#Override
public void onSuccess(Uri uri) {
db.child("name").setValue(nameString);
db.child("image1").setValue(uri.toString());
pd.dismiss();
Toast.makeText(EditorActivity.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
}
});
}
});
fileRef2.putFile(mImageUri2).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
#Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
fileRef2.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
#Override
public void onSuccess(Uri uri) {
db.child("image2").setValue(uri.toString());
pd.dismiss();
Toast.makeText(EditorActivity.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
'''

Button isn't starting a new intent

I'm trying to make a register screen with some text fields for the user to type a username and a password, and the button should save the data and go back to the login screen. But when I click the register button, it doesn't go back to login screen.
I have commented where I think the error is at:
package com.example.gerenciadorestoqueoficial;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Cadastro extends AppCompatActivity {
EditText cadastroNome;
EditText cadastroPassword;
EditText cnfCadastroPassword;
Button cadastrar;
Button voltar;
TextView verLogin;
DbHelper db;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tela_cadastro);
cadastroNome = (EditText)findViewById(R.id.etCadastroNome);
cadastroPassword = (EditText)findViewById(R.id.etCadastroPassword);
cnfCadastroPassword =(EditText)findViewById(R.id.etConfirmarPassword);
cadastrar = (Button)findViewById(R.id.btnCadastrar);
verLogin = (TextView)findViewById(R.id.tvLoginCadastro);
voltar = (Button)findViewById(R.id.btnVoltarCadastro);
final DbHelper db = new DbHelper (this);
verLogin.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent loginIntent = new Intent(Cadastro.this,MainActivity.class);
startActivity(loginIntent);
}
});
voltar.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent intent = new Intent(Cadastro.this,MainActivity.class);
finish();
startActivity(intent);
}
});
// here is the button
cadastrar.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
String usuario = cadastroNome.getText().toString();
String password = cadastroPassword.getText().toString();
String cnfPassword = cnfCadastroPassword.getText().toString();
if(password.equals(cnfPassword)){
long val = db.adicionarUsuario(usuario, password);
if(val > 0){
Toast.makeText(Cadastro.this, "Usuário cadastrado", Toast.LENGTH_SHORT).show();
Intent irParaLogin = new Intent(Cadastro.this, MainActivity.class); // here is the intent that is not working
finish();
startActivity(irParaLogin);
}else if(cadastroNome.getText().toString().length() == 0 || cadastroPassword.getText().toString().length() == 0 || cnfCadastroPassword.getText().toString().length() == 0){
Toast.makeText(Cadastro.this, "Preencha todos os campos", Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
It should be saying "Usuário cadastrado" after saving data with the help of SQLite and then going back to login screen, unless the passwords do not match in both text fields.
Better u make your DBHelper Insert method like bool return type
public boolean InsertData(String name,int cost,int sell,int profit)
{
SQLiteDatabase db=this.getWritableDatabase();
ContentValues contentValues=new ContentValues();
contentValues.put("Name",name);
contentValues.put("Cost_Price",cost);
contentValues.put("Selling_Price",sell);
contentValues.put("Profit",profit);
long result= db.insert("Table_B",null,contentValues);
if (result==-1)
return false;
else
return true;
}
after this send your Username and Password to this method and accept it in Boolean variable....as foolows
boolean isInserted = mdb.InsertData("Cake" "1kilo", 60, 50, 10);
if (isInserted == true)
//start your intent here
else
Toast.makeText(Register.this, "OOps Data Not Inserted", Toast.LENGTH_LONG).show();

how to add images to dialog flow chat bot in android studio

`I'm using dialog flow for chat bot in my app. I've tried to put some images for chat bot to send it to user. It works fine and appears in dialog flow simulator but it doesn't work and nothing appear in my app. Any help? I'm using android studio. I've tried to change the code so many time the app works but the same problem
The image shows the result in my app and the result in dialog flow simulator
image to understand
package com.example.lmdinalarbi;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.github.bassaer.chatmessageview.model.Message;
import com.github.bassaer.chatmessageview.view.ChatView;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ai.api.AIServiceException;
import ai.api.RequestExtras;
import ai.api.android.AIConfiguration;
import ai.api.android.AIDataService;
import ai.api.android.GsonFactory;
import ai.api.model.AIContext;
import ai.api.model.AIError;
import ai.api.model.AIEvent;
import ai.api.model.AIRequest;
import ai.api.model.AIResponse;
import ai.api.model.Metadata;
import ai.api.model.Result;
import ai.api.model.Status;
public class chatbotamali extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener,View.OnClickListener
{
public static final String TAG = MainActivity.class.getName();
private Gson gson = GsonFactory.getGson();
private AIDataService aiDataService;
private ChatView chatView;
private User myAccount;
private User amali;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chatbotamali);
initChatView();
//Language, Dialogflow Client access token
final LanguageConfig config = new LanguageConfig("JavaScript", "239001d3094444b390e30d3e3ea6832bwwww"
,
AIConfiguration.SupportedLanguages.English,
AIConfiguration.RecognitionEngine.System
);
initService(config);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
getSupportActionBar().setTitle("AM ALI");
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
#Override
public void onClick(View v) {
//new message
final Message message = new Message.Builder()
.setUser(myAccount)
.setRight(true)
.setText(chatView.getInputText())
.hideIcon(true)
.build();
//Set to chat view
chatView.send(message);
sendRequest(chatView.getInputText());
//Reset edit text
chatView.setInputText("");
}
private void sendRequest(String text) {
Log.d(TAG, text);
final String queryString = String.valueOf(text);
final String eventString = null;
final String contextString = null;
if (TextUtils.isEmpty(queryString) && TextUtils.isEmpty(eventString)) {
onError(new AIError(getString(R.string.non_empty_query)));
return;
}
new AiTask().execute(queryString, eventString, contextString);
}
public class AiTask extends AsyncTask<String, Void, AIResponse> {
private AIError aiError;
#Override
protected AIResponse doInBackground(final String... params) {
final AIRequest request = new AIRequest();
String query = params[0];
String event = params[1];
String context = params[2];
if (!TextUtils.isEmpty(query)){
request.setQuery(query);
}
if (!TextUtils.isEmpty(event)){
request.setEvent(new AIEvent(event));
}
RequestExtras requestExtras = null;
if (!TextUtils.isEmpty(context)) {
final List<AIContext> contexts = Collections.singletonList(new AIContext(context));
requestExtras = new RequestExtras(contexts, null);
}
try {
return aiDataService.request(request, requestExtras);
} catch (final AIServiceException e) {
aiError = new AIError(e);
return null;
}
}
#Override
protected void onPostExecute(final AIResponse response) {
if (response != null) {
onResult(response);
} else {
onError(aiError);
}
}
}
private void onResult(final AIResponse response) {
runOnUiThread(new Runnable() {
#Override
public void run() {
// Variables
gson.toJson(response);
final Status status = response.getStatus();
final Result result = response.getResult();
final String speech = result.getFulfillment().getSpeech();
final Metadata metadata = result.getMetadata();
final HashMap<String, JsonElement> params = result.getParameters();
// Logging
Log.d(TAG, "onResult");
Log.i(TAG, "Received success response");
Log.i(TAG, "Status code: " + status.getCode());
Log.i(TAG, "Status type: " + status.getErrorType());
Log.i(TAG, "Resolved query: " + result.getResolvedQuery());
Log.i(TAG, "Action: " + result.getAction());
Log.i(TAG, "Speech: " + speech);
if (metadata != null) {
Log.i(TAG, "Intent id: " + metadata.getIntentId());
Log.i(TAG, "Intent name: " + metadata.getIntentName());
}
if (params != null && !params.isEmpty()) {
Log.i(TAG, "Parameters: ");
for (final Map.Entry<String, JsonElement> entry : params.entrySet()) {
Log.i(TAG, String.format("%s: %s",
entry.getKey(), entry.getValue().toString()));
}
}
//Update view to bot says
final Message receivedMessage = new Message.Builder()
.setUser(amali)
.setRight(false)
.setText(speech)
.build();
chatView.receive(receivedMessage);
}
});
}
private void onError(final AIError error) {
runOnUiThread(new Runnable() {
#Override
public void run() {
Log.e(TAG,error.toString());
}
});
}
private void initChatView() {
int myId = 0;
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.tunis);
String myName = "wledelmdina";
myAccount = new User(myId, myName, icon);
int botId = 1;
String botName = "amali";
amali = new User(botId, botName, icon);
chatView = findViewById(R.id.chat_view);
chatView.setRightBubbleColor(ContextCompat.getColor(this, R.color.green500));
chatView.setLeftBubbleColor(Color.RED);
chatView.setBackgroundColor(ContextCompat.getColor(this, R.color.aidialog_background));
chatView.setSendButtonColor(ContextCompat.getColor(this, R.color.lightBlue500));
chatView.setSendIcon(R.drawable.ic_action_send);
chatView.setRightMessageTextColor(Color.WHITE);
chatView.setLeftMessageTextColor(Color.WHITE);
chatView.setUsernameTextColor(Color.BLACK);
chatView.setSendTimeTextColor(Color.GRAY);
chatView.setDateSeparatorColor(Color.GRAY);
chatView.setInputTextHint("new message...");
chatView.setMessageMarginTop(5);
chatView.setMessageMarginBottom(5);
chatView.setOnClickSendButtonListener(this);
}
private void initService(final LanguageConfig languageConfig) {
final AIConfiguration.SupportedLanguages lang =
AIConfiguration.SupportedLanguages.fromLanguageTag(languageConfig.getLanguageCode());
final AIConfiguration config = new AIConfiguration(languageConfig.getAccessToken(),
lang,
AIConfiguration.RecognitionEngine.System);
aiDataService = new AIDataService(this, config);
}
#Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
return super.onOptionsItemSelected(item);
}
#SuppressWarnings("StatementWithEmptyBody")
#Override
public boolean onNavigationItemSelected(#NotNull MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.Eldmina) {
Intent intent=new Intent(this,MainActivity.class);
Bundle bundle=new Bundle();
bundle.putString("VALUE_SEND","this data Send");
startActivity(intent);
// Handle the camera action
} else if (id == R.id.souk) {
Intent intent=new Intent(this,elsoukmenu.class);
Bundle bundle=new Bundle();
bundle.putString("VALUE_SEND","this data Send");
startActivity(intent);
} else if (id == R.id.wled) {
Intent intent=new Intent(this,wledelmdina.class);
Bundle bundle=new Bundle();
bundle.putString("VALUE_SEND","this data Send");
startActivity(intent);
} else if (id == R.id.profile) {
}
else if (id == R.id.about) {
Intent intent=new Intent(this,aboutuss.class);
Bundle bundle=new Bundle();
bundle.putString("VALUE_SEND","this data Send");
startActivity(intent);
}
else if (id == R.id.report) {
Intent intent=new Intent(this,wledelmdinamenu.class);
Bundle bundle=new Bundle();
bundle.putString("VALUE_SEND","this data Send");
startActivity(intent);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
build

Retrofit 2.0 Conditional Logic in onResponse not working

I am trying to make a login logic using post request with retrofit, here is my code
Button btnLogin = (Button) findViewById(R.id.btn_login);
btnLogin.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
showProgress(true,"Sedang login... ");
String username = inputUsername.getText().toString();
String password = inputPassword.getText().toString();
apiService.login(new LoginParam(username,password)).enqueue(new Callback<AuthResponse>() {
#Override
public void onResponse(Call<AuthResponse> call, Response<AuthResponse> response) {
if(response.isSuccessful()){
showProgress(false,null);
Editor ed = sp.edit();
ed.putString("token",response.body().getToken());
Boolean login = response.body().getLogin();
Log.d("Login",response.body().getLogin().toString());
ed.putBoolean("login",response.body().getLogin().booleanValue());
ed.putString("username",response.body().getUser().getUsername());
ed.commit();
//startActivity(new Intent(getBaseContext(), MainActivity.class));
if(!login){
TextView infologin = (TextView) findViewById(R.id.loginInfo);
infologin.setText("Username dan password salah, coba lagi");
infologin.setVisibility(View.VISIBLE);
return;
}
else{
Intent i = new Intent(getBaseContext(),MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.putExtra("route","afterlogin");
startActivity(i);
finish();
}
}
}
#Override
public void onFailure(Call<AuthResponse> call, Throwable t) {
LoginActivity.this.showProgress(false, null);
Toast.makeText(LoginActivity.this, "Gagal koneksi ke server, periksa jaringan internet anda error: " + t.toString(), Toast.LENGTH_LONG).show();
}
});
}
});
it was working when username and password are correct, but when it was not, it only shows a loading animation, the block that handle if login is false remains inexecuted. what's going wrong?

How can I disable PICK_CONTACT_REQUEST

I am working on branding a pre-packaged application, and it has a contact selector option that I need to disable since it serves no purpose for us. It's for a single user search using their personal address. I have found an article on how to add it here: http://apiminer.org/doc/guide/components/activities.html
They listed the code as this:
private void pickContact() {
// Create an intent to "pick" a contact, as defined by the content provider URI
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
#Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
// Perform a query to the contact's content provider for the contact's name
Cursor cursor = getContentResolver().query(data.getData(),
new String[] {Contacts.DISPLAY_NAME}, null, null, null);
if (cursor.moveToFirst()) { // True if the cursor is not empty
int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
String name = cursor.getString(columnIndex);
// Do something with the selected contact's name...
}
}
}
I just want to disable this. I can remove the images from the folder that it is calling them from, but that still leaves an active corner. That would be poor usability to just leave it that way. I have tried just commenting and deleting these mentions from the code, and it just throws back 2-3 errors.
This is my HomeActivity.java file that displays the code:
package com.votinginfoproject.VotingInformationProject.activities;
import android.app.LoaderManager;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.votinginfoproject.VotingInformationProject.R;
import com.votinginfoproject.VotingInformationProject.fragments.HomeFragment;
import com.votinginfoproject.VotingInformationProject.models.VIPApp;
import com.votinginfoproject.VotingInformationProject.models.VIPAppContext;
import com.votinginfoproject.VotingInformationProject.models.VoterInfo;
public class HomeActivity extends FragmentActivity implements HomeFragment.OnInteractionListener,
LoaderManager.LoaderCallbacks<Cursor> {
static final int PICK_CONTACT_REQUEST = 1;
VIPApp app;
Uri contactUri;
EditText addressView;
LoaderManager loaderManager;
public String getSelectedParty() {
return selectedParty;
}
public void setSelectedParty(String selectedParty) {
this.selectedParty = selectedParty;
app.setSelectedParty(selectedParty);
}
String selectedParty;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
app = new VIPAppContext((VIPApp) getApplicationContext()).getVIPApp();
loaderManager = getLoaderManager();
selectedParty = "";
contactUri = null;
addressView = (EditText)findViewById(R.id.home_edittext_address);
// Get analytics tracker (should auto-report)
app.getTracker(VIPApp.TrackerName.APP_TRACKER);
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
#Override
protected void onStop() {
super.onStop();
//Stop analytics tracking
GoogleAnalytics.getInstance(this).reportActivityStop(this);
}
#Override
protected void onStart() {
super.onStart();
//Get an Analytics tracker to report app starts, uncaught exceptions, etc.
GoogleAnalytics.getInstance(this).reportActivityStart(this);
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
return id == R.id.action_settings || super.onOptionsItemSelected(item);
}
public void onGoButtonPressed(View view) {
Intent intent = new Intent(this, VIPTabBarActivity.class);
startActivity(intent);
}
public void onSelectContactButtonPressed(View view) {
// contact picker intent to return an address; will only show contacts that have an address
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
#Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// The user picked a contact.
// The Intent's data Uri identifies which contact was selected.
// Get the URI that points to the selected contact
contactUri = data.getData();
// restart loader, if a contact was already selected
loaderManager.destroyLoader(PICK_CONTACT_REQUEST);
// start async query to get contact info
loaderManager.initLoader(PICK_CONTACT_REQUEST, null, this);
} else {
// PASS (user didn't pick an address)
}
}
}
public void searchedAddress(VoterInfo voterInfo) {
// set VoterInfo object on app singleton
app.setVoterInfo(voterInfo, selectedParty);
}
#Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
if (contactUri == null) {
return null;
}
String[] projection = { ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS };
return new CursorLoader(this, contactUri, projection, null, null, null);
}
#Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (data.getCount() > 0) {
data.moveToFirst();
// get result with single column, named data1
String address = data.getString(0);
Log.d("HomeActivity", "Got cursor result: " + address);
// set address found in view
addressView.setText(address);
// initate search with new address
HomeFragment myFragment = (HomeFragment)getSupportFragmentManager().findFragmentById(R.id.home_fragment);
myFragment.makeElectionQuery();
} else {
Log.e("HomeActivity", "Cursor got no results!");
}
}
#Override
public void onLoaderReset(Loader<Cursor> loader) {
// PASS
}
}
Does anyone have a solution for this?

Resources