ArrayList IndexOutOfBound Error - Android Studio

Hi! I am currently doing on a project and I keep hitting the same error despite making changes. I have been hitting indexOutOfBound error and unable to delete my listView item because of that error. I am doing on Tab and Database. Can anyone help me with my error and problem? Thank you!!
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at itp231.dba.nyp.com.mabel_createchallenge.mabel_tabs.mabelUncompleted_Tab1$2.onClick(mabelUncompleted_Tab1.java:124)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Here are by Java Codes
Code:
package itp231.dba.nyp.com.mabel_createchallenge;
import android.content.Context;
import android.database.Cursor;
import java.util.ArrayList;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_database.mabel_MyDBAdpater;
/*
* Created by Guest Account on 13/7/2016.
*/
public class mabel_creatingChallengeApp {
private static mabel_creatingChallengeApp ourInstance = new mabel_creatingChallengeApp();
public static mabel_creatingChallengeApp getInstance() {
return ourInstance;
}
public mabel_creatingChallengeApp() {
challengesCreatedAL = new ArrayList<mabel_challenges>();
}
//* for mabelUncompleted_tab1.java */
private ArrayList<mabel_challenges> challengesCreatedAL;
public ArrayList<mabel_challenges> getArray() {
return challengesCreatedAL;
} //getting the array from ArrayList<mabel_challenges>
public ArrayList<mabel_challenges> getChallengesCreatedAL() {
return challengesCreatedAL;
}
//add and delete entries in the database
//add to database
//context --> context of current state of the application/object
//call it to get information regarding another part of your program (activity and package/application)
public static long addToDatabase(mabel_challenges challenges, Context c) {
mabel_MyDBAdpater db = new mabel_MyDBAdpater(c);
db.open();
long rowIDofInsertEntry = db.insertEntry(challenges);
db.close();
return rowIDofInsertEntry;
}
public static boolean deleteFromDatabase(int rowID, Context c) {
mabel_MyDBAdpater db = new mabel_MyDBAdpater(c);
db.open();
boolean updateStatus = db.removeEntry(rowID);
db.close();
return updateStatus;
}
public static boolean updateDatabase(mabel_challenges cc, int rowID, Context c) {
mabel_MyDBAdpater db = new mabel_MyDBAdpater(c);
db.open();
boolean updateStatus = db.updateEntry(rowID, cc);
db.close();
return updateStatus;
}
//populate array --> retrieve the array
//get the context --> get the content from the page
//store all retrieve data from database
public void populateArrayFromDB(Context c) {
challengesCreatedAL.clear();
mabel_MyDBAdpater db = new mabel_MyDBAdpater(c);
db.open();
Cursor cur = db.retrieveAllEntriesCursor();
cur.moveToFirst();
while(cur.moveToNext()) {
int rowID = cur.getInt(mabel_MyDBAdpater.COLUMN_KEY_ID);
String nameOfChallenge = cur.getString(mabel_MyDBAdpater.COLUMN_NAME_ID);
String descOfChallenge = cur.getString(mabel_MyDBAdpater.COLUMN_DESC_ID);
String durationOfChallenge = cur.getString(mabel_MyDBAdpater.COLUMN_DURATION_ID);
mabel_challenges newChallenge = new mabel_challenges(rowID, nameOfChallenge, descOfChallenge, durationOfChallenge);
challengesCreatedAL.add(newChallenge);
}
db.close();
}
}
Code:
package itp231.dba.nyp.com.mabel_createchallenge.mabel_tabs;
/*
fragment is part of an activity
*/
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import itp231.dba.nyp.com.mabel_createchallenge.R;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_EditChallengeActivity;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_challengeDetailActivity;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_challenges;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_creatingChallengeApp;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_database.mabel_myChallengesListAdapter;
public class mabelUncompleted_Tab1 extends Fragment{
ListView listOfItemsLV;
ArrayList<mabel_challenges> challengesCreatedAL;
mabel_creatingChallengeApp cc;
public int selectedItem;
mabel_challenges c;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.mabel_tab_1_uncompleted, container, false);
listOfItemsLV = (ListView) v.findViewById(R.id.challengesUncompletedLV);
registerForContextMenu(listOfItemsLV);
// addPage = (ImageButton) v.findViewById(R.id.addPage);
//calling out Instance Variable before the adapater
//to get challenges item on the list item
cc = mabel_creatingChallengeApp.getInstance();
//retrieve array from database
cc.populateArrayFromDB(getActivity().getApplicationContext()); //because is fragment so getActivity --> fragment is the contents in the tab -->getActivity will get the whole screen contents including contents in the tab
challengesCreatedAL = cc.getArray();
//Adapter for List View
mabel_myChallengesListAdapter challengesAdapter = new mabel_myChallengesListAdapter(getActivity(), challengesCreatedAL);
listOfItemsLV.setAdapter(challengesAdapter);
listOfItemsLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//getting the position of item in the array list
mabel_challenges c = challengesCreatedAL.get(i);
//intent for challenge detail
//mabel_challengeDetailActivity.class --> get to here
Intent viewDetailsIntent = new Intent(getActivity().getApplicationContext(), mabel_challengeDetailActivity.class);
//put extra --> Add extended data to the intent
viewDetailsIntent.putExtra(mabel_challenges.INTENT_NAME_CHALLENGENAME, c.getName());
viewDetailsIntent.putExtra(mabel_challenges.INTENT_NAME_DESCRIPTION, c.getDesc());
viewDetailsIntent.putExtra(mabel_challenges.INTENT_NAME_DURATION, c.getDuration());
viewDetailsIntent.putExtra("position", i);
startActivity(viewDetailsIntent);
}
});
return v;
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Options");
menu.add(1,1,1, "Edit");
menu.add(1,2,2, "Delete");
}
public boolean onContextItemSelected(MenuItem item) {
final AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
selectedItem = menuInfo.position;
//mabel_challenges c = challengesCreatedAL.get(selectedItem);
switch(item.getItemId()) {
case 1:
//edit challenge
Intent editChallenge = new Intent (getActivity(), mabel_EditChallengeActivity.class);
editChallenge.putExtra(mabel_challenges.INTENT_NAME_ARRAY_ITEM, selectedItem);
startActivity(editChallenge);
break;
case 2:
//delete challenge
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
dialogBuilder.setMessage("Confirm delete ?");
dialogBuilder.setPositiveButton("Delete" ,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
mabel_myChallengesListAdapter challengeAdapter = new mabel_myChallengesListAdapter(getActivity().getApplicationContext(), challengesCreatedAL);
listOfItemsLV.setAdapter(challengeAdapter);
challengeAdapter.notifyDataSetChanged();
//prac 7b sales tracker -->delete the item
//selectedItem is the index of the array
mabel_creatingChallengeApp ca = mabel_creatingChallengeApp.getInstance();
int challengeId = ca.getArray().get(selectedItem).getId();
mabel_creatingChallengeApp.deleteFromDatabase(challengeId, getActivity().getApplicationContext());
ca.populateArrayFromDB(getActivity().getApplicationContext());
Toast.makeText(getActivity().getApplicationContext(), "Deleted!", Toast.LENGTH_LONG).show();
}
});
dialogBuilder.setNegativeButton("Cancel",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// dialogBuilder.setCancelable(true);
Toast.makeText(getActivity().getApplicationContext(), "Cancelled!", Toast.LENGTH_LONG).show();
}
});
dialogBuilder.create();
dialogBuilder.show();
break;
}
return true;
}
@Override
public void onResume() {
super.onResume();
cc.populateArrayFromDB(getActivity().getApplicationContext());
}
}
Code:
package itp231.dba.nyp.com.mabel_createchallenge.mabel_database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_challenges;
import itp231.dba.nyp.com.mabel_createchallenge.mabel_creatingChallengeApp;
/**
* Created by Guest Account on 13/7/2016.
* for uncompleted Tab
*/
public class mabel_MyDBAdpater {
private static final String DATABASE_NAME = "Challenges.db"; //name of database
private static final String DATABASE_TABLE = "ChallengesDatabase"; //database table name
private static final int DATABASE_VERSION = 2;
private SQLiteDatabase _db; //sqlite database handler
private final Context context; //current context
public static final String KEY_ID = "_id";
public static final int COLUMN_KEY_ID = 0;
public static final String ENTRY_CHALLENGE_NAME = "Name"; //name of column
public static final int COLUMN_NAME_ID = 1; //retrieval, position
public static final String ENTRY_CHALLENGE_DESC = "Description";
public static final int COLUMN_DESC_ID = 2;
public static final String ENTRY_CHALLENGE_DURATION = "Duration";
public static final int COLUMN_DURATION_ID = 3;
protected static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " " + "(" + KEY_ID + " integer primary key autoincrement, " +
ENTRY_CHALLENGE_NAME + " Text, " + ENTRY_CHALLENGE_DESC + " Text, " + ENTRY_CHALLENGE_DURATION + " Text);";
//making debugging easier
//a fix pid for Eclipse debugger
//open and close method
private String mabel_MyDBAdapter_LOG_CAT = "MY_LOG";
private MyDBOpenHelper dbHelper;
public mabel_MyDBAdpater(Context _context)
{
this.context = _context;
dbHelper = new MyDBOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION); //help to create object
}
public void close()
{
_db.close();
Log.w(mabel_MyDBAdapter_LOG_CAT, "DB closed");
}
public void open() throws SQLiteException
{
try
{
_db = dbHelper.getWritableDatabase();
Log.w(mabel_MyDBAdapter_LOG_CAT, "DB opened as writable database");
}
catch(SQLiteException e)
{
_db = dbHelper.getReadableDatabase();
Log.w(mabel_MyDBAdapter_LOG_CAT, "DB opened as readable database");
}
}
public long insertEntry(mabel_challenges cc)
{
// Create a new record
ContentValues newEntryValues = new ContentValues();
// Assign values for each row
newEntryValues.put(ENTRY_CHALLENGE_NAME, cc.getName());
newEntryValues.put(ENTRY_CHALLENGE_DESC, cc.getDesc());
newEntryValues.put(ENTRY_CHALLENGE_DURATION, cc.getDuration());
// Insert the row
Log.w(mabel_MyDBAdapter_LOG_CAT, "Inserted EntryName = " + cc.getName()
+ " EntryDesc = " + cc.getDesc() + " EntryDuration = " + cc.getDuration() + " into table " + DATABASE_TABLE);
return _db.insert(DATABASE_TABLE, null, newEntryValues);
}
//removing data
public boolean removeEntry(long _rowIndex)
{
if (_db.delete(DATABASE_TABLE, KEY_ID + " = " + _rowIndex, null) <= 0)
{
Log.w(mabel_MyDBAdapter_LOG_CAT, "Removing entry where id = "
+ _rowIndex + " Failed");
return false;
}
Log.w(mabel_MyDBAdapter_LOG_CAT, "Removing entry where id = "
+ _rowIndex + " Success");
return true;
}
//update method
public boolean updateEntry(long rowIndex, mabel_challenges cc) {
ContentValues updateValues = new ContentValues();
mabel_creatingChallengeApp ca = mabel_creatingChallengeApp.getInstance();
updateValues.put(ENTRY_CHALLENGE_NAME, cc.getName());
updateValues.put(ENTRY_CHALLENGE_DESC, cc.getDesc());
updateValues.put(ENTRY_CHALLENGE_DURATION, cc.getDuration());
String where = KEY_ID + "=" + rowIndex; //selected id for updating data
Log.w(mabel_MyDBAdapter_LOG_CAT, "Updated Challenge Name = " + cc.getName() + "Update Challenge Description = " + cc.getDesc() + "Update Duration = " + cc.getDuration() + " into table " +DATABASE_TABLE);
if (_db.update(DATABASE_TABLE, updateValues, where, null) <= 0) {
return true; //return success
}
return false; //newer update anything
}
//retrieve method
public Cursor retrieveAllEntriesCursor()
{
Cursor c = null;
try
{
c = _db.query(DATABASE_TABLE, new String[] {KEY_ID,ENTRY_CHALLENGE_NAME, ENTRY_CHALLENGE_DESC, ENTRY_CHALLENGE_DURATION}, null, null, null, null, null);
}
catch(SQLiteException e)
{
Log.w(mabel_MyDBAdapter_LOG_CAT, "Retrieve fail!");
}
return c;
}
public class MyDBOpenHelper extends SQLiteOpenHelper
{
public MyDBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
{
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override //compulsory method
public void onCreate(SQLiteDatabase db)
{
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE);
Log.w(mabel_MyDBAdapter_LOG_CAT, "Helper : DB " + DATABASE_TABLE + " Created!!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// TODO Auto-generated method stub
}
} // End of myDBOpenHelper
}
Can help me to see what's wrong? Thank you !!!!

I can't read the all code, it's too long, but ai think that you want to access for example array [5], but array length is smaller.
Trimis de pe al meu Sony Z2 D6503

mabelll said:
Hi! I am currently doing on a project and I keep hitting the same error despite making changes. I have been hitting indexOutOfBound error and unable to delete my listView item because of that error. I am doing on Tab and Database. Can anyone help me with my error and problem? Thank you!!
Click to expand...
Click to collapse
Uncompleted_Tab1 onClick(mabelUncompleted _Tab1.java:124)
cannot see the line number. check line 124 for yourself.

Related

[Q]scan for ble device

I'm trying to develop an app to scan for a BLE device. However, it only scans one time. I tried to use a while loop to loop it but it hangs there. The scanning part is at the proceed function:
Code:
package com.example.user.myfriend;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;
public class MainActivity extends ActionBarActivity {
BluetoothAdapter mBluetoothAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hello();
}
public void hello() {
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, 1);
}
proceed();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
proceed();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
int startByte = 2;
boolean patternFound = false;
while (startByte <= 5) {
if (((int) scanRecord[startByte + 2] & 0xff) == 0x02 && //Identifies an iBeacon
((int) scanRecord[startByte + 3] & 0xff) == 0x15) { //Identifies correct data length
patternFound = true;
break;
}
startByte++;
}
if (patternFound) {
//Convert to hex String
byte[] uuidBytes = new byte[16];
System.arraycopy(scanRecord, startByte + 4, uuidBytes, 0, 16);
String hexString = bytesToHex(uuidBytes);
//Here is your UUID
String uuid = hexString.substring(0, 8) + "-" +
hexString.substring(8, 12) + "-" +
hexString.substring(12, 16) + "-" +
hexString.substring(16, 20) + "-" +
hexString.substring(20, 32);
//Here is your Major value
int major = (scanRecord[startByte + 20] & 0xff) * 0x100 + (scanRecord[startByte + 21] & 0xff);
//Here is your Minor value
int minor = (scanRecord[startByte + 22] & 0xff) * 0x100 + (scanRecord[startByte + 23] & 0xff);
if (major == 1) {
RelativeLayout hai = (RelativeLayout) findViewById(R.id.hai);
hai.setBackgroundColor(Color.YELLOW);
}
if (major == 2) {
RelativeLayout hai = (RelativeLayout) findViewById(R.id.hai);
hai.setBackgroundColor(Color.RED);
}
}
}
};
private static String bytesToHex(byte[] bytes) {
final char[] hexArray = "0123456789ABCDEF".toCharArray();
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
public void proceed() {
boolean scanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
// @Override
public void run() {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}, 50000000);
}
Code:

PHP, database, SQL app

hi.
i make login and register app' that use php,SQL and database, all work excellent,
I add a few thing like: user can upload image (base64) to his php folder and more,
So now i am stock when i want get image back (base64) from php folder
this my code:
Code:
public class SQLiteHandler extends SQLiteOpenHelper {
private static final String TAG = SQLiteHandler.class.getSimpleName();
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "u294011906_camel";
// Login table name
private static final String TABLE_LOGIN = "login";
// Login Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_EMAIL = "email";
private static final String KEY_UID = "uid";
private static final String KEY_CREATED_AT = "created_at";
public SQLiteHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_EMAIL + " TEXT UNIQUE," + KEY_UID + " TEXT,"
+ KEY_CREATED_AT + " TEXT" + ")";
db.execSQL(CREATE_LOGIN_TABLE);
Log.d(TAG, "Database tables created");
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGIN);
// Create tables again
onCreate(db);
}
/**
* Storing user details in database
* */
public void addUser(String name, String email, String uid, String created_at) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, name); // Name
values.put(KEY_EMAIL, email); // Email
values.put(KEY_UID, uid); // Email
values.put(KEY_CREATED_AT, created_at); // Created At
// Inserting Row
long id = db.insert(TABLE_LOGIN, null, values);
db.close(); // Closing database connection
Log.d(TAG, "New user inserted into sqlite: " + id);
}
/**
* Getting user data from database
* */
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<String, String>();
String selectQuery = "SELECT * FROM " + TABLE_LOGIN;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
user.put("name", cursor.getString(1));
user.put("email", cursor.getString(2));
user.put("uid", cursor.getString(3));
user.put("created_at", cursor.getString(4));
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Fetching user from Sqlite: " + user.toString());
return user;
}
/**
* Getting user login status return true if rows are there in table
* */
public int getRowCount() {
String countQuery = "SELECT * FROM " + TABLE_LOGIN;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int rowCount = cursor.getCount();
db.close();
cursor.close();
// return row count
return rowCount;
}
/**
* Re crate database Delete all tables and create them again
* */
public void deleteUsers() {
SQLiteDatabase db = this.getWritableDatabase();
// Delete All Rows
db.delete(TABLE_LOGIN, null, null);
db.close();
Log.d(TAG, "Deleted all user info from sqlite");
}
}
Code:
/**
* Function to upload profile picture
* */
private void uploadProfilePicture(final String image,final String emailToSend)
{
// Tag used to cancel the request
pictureCheck = "null";
String tag_string_req = "profile_image";
pDialog.setMessage("Upload profile picture ...");
showDialog();
StringRequest strReq = new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Upload profile picture Response: " + response.toString());
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
Toast.makeText(getApplicationContext(), "Your new profile picture sucessfully uploaded", Toast.LENGTH_LONG).show();
} else {
// Error occurred in registration. Get the error
// message
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Profile picture Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
})
{
@Override
protected Map<String, String> getParams()
{
// Posting params to register url
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "profile_image");
params.put("ImageName", emailToSend);
params.put("base64", image);
params.put("email", emailToSend);
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
And Some code how i am get details of user
Code:
// Fetching user details from sqlite
HashMap<String, String> user = db.getUserDetails();
String name = user.get("name");
String email = user.get("email");
EmailtoSend = email;
// Displaying the user details on the screen
txtName.setText(name);
i want get profile image from php folder, i put image(bae64) to folder that open when user register. All work excellent, when user upload image, image uploaded to user folder with name "profile_image"
so now i want get this image when login open app/login
someone can help me?
if someone have skype it's will be great

force close when can not connect server

hi my app is ood but when i hav not internet and cant load data from my database
my app will be force close
my error is in emulatur
130 - AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() {
and
153- if(!result.equals("")){
in this java activity
HTML:
package com.smartapp.soton;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import com.baoyz.widget.PullRefreshLayout;
import com.koushikdutta.async.http.AsyncHttpClient;
import com.koushikdutta.async.http.AsyncHttpPost;
import com.koushikdutta.async.http.AsyncHttpResponse;
import com.koushikdutta.async.http.body.MultipartFormDataBody;
import com.koushikdutta.async.http.socketio.ExceptionCallback;
import com.squareup.picasso.Picasso;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
public class Frag_Banners_All extends Fragment {
// Development by SmartMob (Manager : Mohammad Mokhles)
View v ;
Context context ;
GridView gridView ;
public List<HashMap<String , Object>> hash_all ;
String[] items ;
Ad ad ;
int preLast ;
int page = 0 ;
View row ;
ImageView row_list_img1 ;
TextView row_list_title , row_list_price , row_list_time ;
CardView row_list_card ;
PullRefreshLayout refresh ;
[user=3869344]@nullable[/user]
[user=439709]@override[/user]
public View onCreateView(LayoutInflater inflater, [user=3869344]@nullable[/user] ViewGroup container, [user=3869344]@nullable[/user] Bundle savedInstanceState) {
v = inflater.inflate(R.layout.frag_banners_all,container,false);
context = v.getContext();
hash_all = new ArrayList<>();
items = new String[hash_all.size()];
ad = new Ad();
gridView = (GridView)v.findViewById(R.id.grid_all);
gridView.setAdapter(ad);
gridView.setOnScrollListener(new AbsListView.OnScrollListener() {
[user=439709]@override[/user]
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
[user=439709]@override[/user]
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(totalItemCount>=10){
final int lastItem = firstVisibleItem + visibleItemCount ;
if(lastItem == totalItemCount){
if(preLast != lastItem){
preLast = lastItem ;
page = page + 1 ;
try {
get_banners(page);
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}
});
page = 0 ;
preLast = 0 ;
CheckNet();
refresh = (PullRefreshLayout)v.findViewById(R.id.refresh);
refresh.setOnRefreshListener(new PullRefreshLayout.OnRefreshListener() {
[user=439709]@override[/user]
public void onRefresh() {
page = 0 ;
preLast = 0 ;
CheckNet();
}
});
return v;
}
private void get_banners(final int pages){
MainActivity.wait.show();
AsyncHttpPost post = new AsyncHttpPost(
"this is my linke i removed"
);
post.setTimeout(5000);
MultipartFormDataBody body = new MultipartFormDataBody();
body.addStringPart("City",MainActivity.sp.getString("City",null));
body.addStringPart("Cate","all");
body.addStringPart("Page", String.valueOf(pages));
post.setBody(body);
try{
AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() {
[user=439709]@override[/user]
public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) {
CheckNet();
if(e != null){
MainActivity.activity.runOnUiThread(new Runnable() {
[user=439709]@override[/user]
public void run() {
try{
refresh.setRefreshing(false);
}catch (Exception e){
e.printStackTrace();
}
MainActivity.wait.dismiss();
Toast.makeText(MainActivity.activity, "خطا در برقراری اتصال با سرور !", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
});
}
if(!result.equals("")){
MainActivity.activity.runOnUiThread(new Runnable() {
[user=439709]@override[/user]
public void run() {
MainActivity.wait.dismiss();
if(page==0){
hash_all.clear();
}
items.clone();
try {
JSONArray jsonArray = new JSONArray(result);
for (int i = 0 ;i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
HashMap<String , Object> hash_add = new HashMap<String, Object>();
hash_add.put("ID",object.getString("ID"));
hash_add.put("Username",object.getString("Username"));
hash_add.put("Title",object.getString("Title"));
hash_add.put("Descript",object.getString("Descript"));
hash_add.put("Price",object.getString("Price"));
hash_add.put("Tell",object.getString("Tell"));
hash_add.put("Email",object.getString("Email"));
hash_add.put("City",object.getString("City"));
hash_add.put("Cate",object.getString("Cate"));
hash_add.put("Img1",object.getString("Img1"));
hash_add.put("Img2",object.getString("Img2"));
hash_add.put("Img3",object.getString("Img3"));
hash_add.put("Date",object.getString("Date"));
hash_all.add(hash_add);
items = new String[hash_all.size()];
}
ad.notifyDataSetChanged();
refresh.setRefreshing(false);
}catch (Exception e){
e.printStackTrace();
}
}
});
}
}
});
}catch (Exception e){
e.printStackTrace();
}
}
public class Ad extends ArrayAdapter<String>{
private LayoutInflater inflater = null ;
public Ad(){
super(context,R.layout.row_list);
inflater = (LayoutInflater)MainActivity.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
[user=439709]@override[/user]
public int getCount() {
return items.length;
}
[user=923100]@Nonnu[/user]ll
[user=439709]@override[/user]
public View getView(int position, View convertView, ViewGroup parent) {
row = convertView ;
if(convertView == null){
row = inflater.inflate(R.layout.row_list,parent,false);
}
row_list_img1 = (ImageView)row.findViewById(R.id.row_list_img1);
row_list_title = (TextView) row.findViewById(R.id.row_list_title);
row_list_price = (TextView)row.findViewById(R.id.row_list_price);
row_list_time = (TextView)row.findViewById(R.id.row_list_time);
row_list_card = (CardView) row.findViewById(R.id.row_list_card);
final HashMap<String , Object> hash_get = (HashMap<String , Object>) hash_all.get(position);
row_list_title.setText(hash_get.get("Title").toString());
row_list_price.setText(hash_get.get("Price").toString()+" تومان");
if(Integer.parseInt(hash_get.get("Date").toString())<=59){
if(hash_get.get("Date").toString().equals("0") || hash_get.get("Date").toString().equals("1")){
row_list_time.setText("همین الان");
}else {
row_list_time.setText(hash_get.get("Date").toString()+" دقیقه پیش");
}
}else if(Integer.parseInt(hash_get.get("Date").toString())>=60 && Integer.parseInt(hash_get.get("Date").toString())<=1439){
int h = Integer.parseInt(hash_get.get("Date").toString())/60;
row_list_time.setText(h+" ساعت پیش");
}else if(Integer.parseInt(hash_get.get("Date").toString())>=1440 && Integer.parseInt(hash_get.get("Date").toString())<=43199){
int hh = Integer.parseInt(hash_get.get("Date").toString())/60/24;
row_list_time.setText(hh+" روز پیش");
}else if(Integer.parseInt(hash_get.get("Date").toString())>=43200 && Integer.parseInt(hash_get.get("Date").toString())<=518339){
int hhh = Integer.parseInt(hash_get.get("Date").toString())/60/24/30;
row_list_time.setText(hhh+" ماه پیش");
}else if(Integer.parseInt(hash_get.get("Date").toString())>=518340){
int hhhh = Integer.parseInt(hash_get.get("Date").toString())/60/24/30/12;
row_list_time.setText(hhhh+" سال پیش");
}
Picasso.with(MainActivity.activity)
.load(hash_get.get("Img1").toString())
.placeholder(R.mipmap.ic_launcher)
.into(row_list_img1);
row_list_card.setOnClickListener(new View.OnClickListener() {
[user=439709]@override[/user]
public void onClick(View v) {
Intent intent = new Intent(MainActivity.activity,Detail_Banners.class);
intent.putExtra("ID",hash_get.get("ID").toString());
intent.putExtra("Username",hash_get.get("Username").toString());
intent.putExtra("Title",hash_get.get("Title").toString());
intent.putExtra("Descript",hash_get.get("Descript").toString());
intent.putExtra("Price",hash_get.get("Price").toString());
intent.putExtra("Tell",hash_get.get("Tell").toString());
intent.putExtra("Email",hash_get.get("Email").toString());
intent.putExtra("City",hash_get.get("City").toString());
intent.putExtra("Cate",hash_get.get("Cate").toString());
intent.putExtra("Img1",hash_get.get("Img1").toString());
intent.putExtra("Img2",hash_get.get("Img2").toString());
intent.putExtra("Img3",hash_get.get("Img3").toString());
intent.putExtra("Date",hash_get.get("Date").toString());
startActivity(intent);
}
});
return row;
}
}
private void saeed(){
}
private void CheckNet(){
boolean connect = false ;
ConnectivityManager connectivityManager = (ConnectivityManager)MainActivity.activity.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED
|| connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED){
connect = true ;
}else {
connect = false ;
}
if(connect==true){
try {
get_banners(page);
}catch (Exception e){
e.printStackTrace();
}
}else {
new MaterialDialog.Builder(MainActivity.activity)
.title("عدم اتصال به اینترنت")
.content("لطفا اتصال به اینترنت خود را بررسی کنید")
.positiveText("بررسی مجدد")
.negativeText("خروج")
.callback(new MaterialDialog.ButtonCallback() {
[user=439709]@override[/user]
public void onNegative(MaterialDialog dialog) {
super.onNegative(dialog);
MainActivity.activity.finish();
}
[user=439709]@override[/user]
public void onPositive(MaterialDialog dialog) {
super.onPositive(dialog);
CheckNet();
}
})
.show();
}
}
// Development by SmartMob (Manager : Mohammad Mokhles)
}
althing is ok but when i havent internet connection it will be force close

[REQUEST] BLOCK/DISABLE Pull-down Quick Toggle on Secure Lockscreen

Maybe any devs can adapt this for Magisk module?
https://github.com/char101/xposed-q...main/java/com/github/char101/qslock/Main.java
Code:
package com.github.char101.qslock;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import android.util.Log;
public class Main implements IXposedHookLoadPackage {
private static final String TAG = "qslock";
private static final int DISABLE_EXPAND = 0x00010000;
private static final int DISABLE_NOTIFICATION_ICONS = 0x00020000;
private static final int DISABLE_NOTIFICATION_ALERTS = 0x00040000;
private static final int DISABLE_NOTIFICATION_TICKER = 0x00080000;
private static final int DISABLE_SYSTEM_INFO = 0x00100000;
private static final int DISABLE_HOME = 0x00200000;
private static final int DISABLE_RECENT = 0x01000000;
private static final int DISABLE_BACK = 0x00400000;
private static final int DISABLE_CLOCK = 0x00800000;
private static final int DISABLE_SEARCH = 0x02000000;
private static final int DISABLE_NONE = 0x00000000;
private static final int DISABLE2_QUICK_SETTINGS = 1;
private static final int DISABLE2_SYSTEM_ICONS = 1 << 1;
private static final int DISABLE2_NOTIFICATION_SHADE = 1 << 2;
private static final int DISABLE2_GLOBAL_ACTIONS = 1 << 3;
private static final int DISABLE2_ROTATE_SUGGESTIONS = 1 << 4;
private static final int DISABLE2_NONE = 0x00000000;
public int getProp(Class<?> SystemProperties, String name, int defaultValue) {
String val = (String) XposedHelpers.callStaticMethod(SystemProperties, "get", new Class<?>[]{String.class}, name);
try {
return val.equals("") ? defaultValue : Integer.parseInt(val);
} catch (NumberFormatException ex) {
Log.e(TAG, "invalid value for " + name + ": " + val);
return defaultValue;
}
}
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("com.android.systemui")) {
return;
}
XposedBridge.log(TAG + ": started");
final Class<?> SystemProperties = XposedHelpers.findClass("android.os.SystemProperties", null);
XposedHelpers.findAndHookMethod("com.android.systemui.keyguard.KeyguardViewMediator", lpparam.classLoader, "adjustStatusBarLocked", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Object mStatusBarManager = XposedHelpers.getObjectField(param.thisObject, "mStatusBarManager");
if (mStatusBarManager != null) {
boolean mShowing = (boolean) XposedHelpers.getBooleanField(param.thisObject, "mShowing");
final int mode2 = getProp(SystemProperties,"persist.qslock.mode2", DISABLE2_QUICK_SETTINGS);
if (mShowing) {
final int mode = getProp(SystemProperties,"persist.qslock.mode", 0);
if (mode > 0) {
Log.i(TAG, "disable: " + mode);
XposedHelpers.callMethod(mStatusBarManager, "disable", new Class<?>[]{int.class}, mode);
}
if (mode2 > 0) {
Log.i(TAG, "disable2: " + mode2);
XposedHelpers.callMethod(mStatusBarManager, "disable2", new Class<?>[]{int.class}, mode2);
}
} else {
if (mode2 > 0) {
XposedHelpers.callMethod(mStatusBarManager, "disable2", new Class<?>[]{int.class}, DISABLE2_NONE);
}
}
} else {
Log.e(TAG, "mStatusBarManager is null");
}
}
});
}
}
Crescendo Xenomorph said:
Maybe any devs can adapt this for Magisk module?
https://github.com/char101/xposed-q...main/java/com/github/char101/qslock/Main.java
Click to expand...
Click to collapse
Not possible,Xposed alters code while magisk alters files,you can't convert an Xposed module into a magisk module
Sent from my Moto G 2015 using XDA Labs
DanGLES3 said:
Not possible,Xposed alters code while magisk alters files,you can't convert an Xposed module into a magisk module
Sent from my Moto G 2015 using XDA Labs
Click to expand...
Click to collapse
or maybe a cue of what code in what smali that it replaces?
Sent from my MI 5s Plus using Tapatalk

WebApp + sql. Can't make sql to work.

Hey guys.
So, I've spent the last two days watching every tutorial about working with sqlite, but I'm doing something wrong and can't find out what.
The app is done, only needs the SQLite part, Its basicly a webapp with favorites.
Altough I have changed the code several times, this is what I ended up with:
DBManager.java
<code>
package com.rjpf.mywebapps;
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class DBManager
{
private DbHelper dbHelper;
private Context context;
private SQLiteDatabase database;
public DBManager(Context c)
{
context=c;
}
public DBManager open() throws SQLException
{
dbHelper = new DbHelper(context);
database = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
dbHelper.close();
}
public void insert(String name, String url)
{
ContentValues contentValue = new ContentValues();
contentValue.put(DbHelper.CONTACTS_COLUMN_NAME, name);
contentValue.put(DbHelper.CONTACTS_COLUMN_URL, url);
database.insert(dbHelper.CONTACTS_TABLE_NAME, null, contentValue);
}
}
</code>
When I try to call it in the main activity with:
MainActivity.java
<code>
(...)
private LinearLayout Layout_Add;
private TextView TxT_add_nomE;
private TextView TxT_add_urL;
private Button Button_Add_to_DB;
private Button btn_BACK_Add;
DbHelper myDB;
(...)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myDB = new DbHelper(this);
(...)
Button_Add_to_DB.setOnClickListener(new View.OnClickListener() {
@override
public void onClick(View view) {
Add_ItemToDb();
}
});
(...)
public void Add_ItemToDb()
{
if (TxT_add_nomE.getText().toString().trim().length() == 0 || TxT_add_urL.getText().toString().trim().length() == 0)
{
TxT_add_nomE.setText("Please don't leave fields empty!");
return;
}
else
{
String addNome = TxT_add_nomE.getText().toString();
String addUrl = TxT_add_urL.getText().toString();
// ADD TO DB
DBManager DataManager = new DBManager(this);
DataManager.insert(addNome,addUrl); // This line is what gives the error, when I click the button to add the App craches
TxT_add_nomE.setText("Name");
TxT_add_urL.setText("Url");
}
}
</code>
Thanks in advance and sorry for the long post, This is my first app and also the first time in java

Categories

Resources