• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

One hint of magic - Chapter 1 of Part 3 now available on Google Play Store!

Finally, the first Chapter of Part 3 is now available on Google Play Store! :D
Here’s the link:
https://play.google.com/store/apps/details?id=callandha.app
I've also added some new features and settings:
-You can now manually save your progress in the settings
-the Character-section has been updated

There is also a new subforum on Reddit to discuss story-related content and more:https://www.reddit.com/r/OneHintOfMagic/
I also sometimes upload additional graphics on my Instagram-profile, if you're interested: https://www.instagram.com/callandha_studio/

This is an interactive text adventure story app, so you can make your own choices to alter the course of the story.
Short overview of the story:
The story is about five girls, who discover supernatural abilities like a special bond to one of the four elements. Laurel, the protagonist, also is repeatingly dreaming about a certain boy, but every time she encounters him in the dreamworld, his face looks unfocused. One day, a shady figure appears in her dreams as well, watching her from the shadows and threatening her. Laurel also encounters four other girls in the real world, who seem to have supernatural abilities just like her, though some of her friends seem closer to the darkness than Laurel might have thought at first gaze. The following days, the five girls meet up regularly and eventually find the way to a hidden school that teaches magic. But not all is as well as it seems. Laurel keeps getting into bad accidents and someday, one of her friends suddenly disappears without a trace. Is this related to the creepy shadows, that lurk around the school? Are they somehow connected to the mysterious school director? The shadows are coming… Can you keep your friends safe from them?

The whole book is parted into six parts and I’m already working on the third part now. A second book is planned as well.

Greetings, Callandha

Attachments

  • lau.jpg
    lau.jpg
    183.2 KB · Views: 335
  • teal.jpg
    teal.jpg
    137.3 KB · Views: 245
  • romy2.jpg
    romy2.jpg
    995.2 KB · Views: 281

I came to the Smart One Please Help me Greendot Debit

https://play.google.com/store/apps/details?id=com.cardinalcommerce.greendot&hl=en
So could you be more specific about the error messages you're seeing when using their app to access your account?

As far as being so averse to using the automated phone tree help service, that's now a typical way a lot of companies do customer support. Follow through the list of options and eventually there could be one to talk to a staffer. But be prepared to put on hold, and maybe for quite a while. Companies are not likely to hire extra people to just sit around waiting to answer calls that may or may not be on demand, so the usual scenario is a bare minimum of people talking actual calls, one by one for hours at a time. Depending on how many calls are also on hold before yours, it could take a while for yours to be answered.
https://www.greendot.com/contact-us
https://www.greendot.com/product-faqs-overview/debit-cards-faq-overview

Listview with custom Adaptor not populating and app returns to previous screen

Hi all

am using a custom adapter for Listview to display the records fetched from database. However when listview activity loads after a couple of seconds it returns to the prior activity without loading listview.

Part of my main activity code is :

for (int i = 0; i < userArray.length(); i++) {

JSONObject jsonObject = userArray.getJSONObject(i);

oid = jsonObject.getInt("oid");

mobile = jsonObject.getString("mobile");

name = jsonObject.getString("name");

arr_oid = oid;
arr_mobile = mobile;
arr_name = name;




}


} else {

Toast.makeText(getApplicationContext(), "Some error occurred", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}

myorderadapter adapter = new myorderadapter(MyordersActivity.this, arr_name, arr_mobile,
arr_oid);


listview.setAdapter(adapter);

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(),"this is click",Toast.LENGTH_SHORT).show();

}
});


}



}

//executing the async task
Myorderdetails ru = new Myorderdetails();
ru.execute();



}

custom adapter code is :

public class myorderadapter extends ArrayAdapter<String> {

Activity context;
String rname[];
String rmobile[];
int roid[];
Context c;


public myorderadapter(Activity context, String[] arr_name, String[] arr_mobile, int[] arr_oid) {

super(context, custom_myorder_table, arr_name);
this.context = context;
this.rname = arr_name;
this.rmobile = arr_mobile;
this.roid = arr_oid;

}



@NonNull
@override
public View getView(int position,View view, ViewGroup parent) {


View row = Inflater.inflate(custom_myorder_table, null, true);



TextView orderid = row.findViewById(R.id.lv_item_oid);
TextView custname = row.findViewById(R.id.lv_item_name);
TextView custmobile = row.findViewById(R.id.lv_item_mobile);

// now set our resources on views
orderid.setText(roid[position]);
custname.setText(rname[position]);
custmobile.setText(rmobile[position]);


return row;
};
}




App runs correctly and the listview screen displays the progress bar however before it could show listview populated with data, it simply returns to the previous screen.

past longing

Glad it's working - yes, taking a system backup when the phone is working is not a bad idea ;).

Retrieving texts from a later backup, I can think of 2 things to try:

1) You can selectively restore a recovery backup (e.g. 4Ext). However you can't selectively restore individual apps, just entire partitions. So you could try restoring the Data partition from a more recent backup, and if it worked you'd have your texts back up to the point where that backup was made. The catch is that if the problem that was stopping the phone booting is in the Data partition then you'll restore the problem as well, and have to go back to your earlier backup as well to get it going again.

2) I've not used it for a few years (because my current phone isn't rooted), but the paid version of Titanium Backup (Titanium Backup Pro) can restore individual apps and their data from a recovery backup. So assuming that it works on this ROM (which is still fairly old) then if you could restore the "message storage" app's data from the most recent recovery backup that should get your texts back without crashing the phone again.

Those are the things I can think of anyway.

Help How do i delete items from a sqlite databse?

I am creating a basic app where i can add customers to a database and display them on another screen, i have set up everything using recyclerview and card views to display the customers and that works fine, but im not sure how i set it up so that i can delete the customers. i have added a button to each of the customers that will be used to delete them.

customerDB
Java:
public class CustomerDB extends SQLiteOpenHelper
{
    // defines the database structure
    public static final String DATABASE_NAME = "customerDB.db";
    public static final String TABLE_NAME = "tbl_Customers";

    // creates the database
    public CustomerDB(Context context){ super(context, DATABASE_NAME, null, 1);}

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase)
    {
        sqLiteDatabase.execSQL("CREATE TABLE tbl_Customers  " +
                "(Customer_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
                "Customer_First_Name TEXT,"  +
                "Customer_Surname TEXT, " +
                "Customer_Address_Line_1 TEXT,"  +
                "Customer_Address_Line_2 TEXT, " +
                "Customer_Address_Line_3 TEXT,"  +
                "Customer_Postcode TEXT, " +
                "Customer_Phone_Number TEXT,"  +
                "Customer_Email TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1)
    {
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(sqLiteDatabase);

    }


    public long addCustomer (String name, String surname, String address1, String address2, String address3, String postcode, String phoneNo, String email)
    {
        SQLiteDatabase Cdb = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("Customer_First_Name", name);
        contentValues.put("Customer_Surname", surname);
        contentValues.put("Customer_Address_Line_1", address1);
        contentValues.put("Customer_Address_Line_2", address2);
        contentValues.put("Customer_Address_Line_3", address3);
        contentValues.put("Customer_Postcode", postcode);
        contentValues.put("Customer_Phone_Number", phoneNo);
        contentValues.put("Customer_Email", email);

        long result = Cdb.insert("tbl_Customers", null, contentValues);
        Cdb.close();
        return result;
    }

    public Cursor ViewData()
    {
        SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
        Cursor cust = sqLiteDatabase.rawQuery("select * from " + TABLE_NAME, null);

        return cust;
    }
   
}

customerAdapter

Java:
public class CustomerAdapter extends RecyclerView.Adapter<CustomerAdapter.MyHolder> {

    private Context context;
    private ArrayList id, name, surname, add1, add2, add3, postCode, phoneNumber, email;

    CustomerDB db = new CustomerDB(context);

    CustomerAdapter(Context context,ArrayList id, ArrayList name, ArrayList surname, ArrayList add1, ArrayList add2, ArrayList add3, ArrayList postCode, ArrayList phoneNumber, ArrayList email){
        this.context = context;
        this.id = id;
        this.name = name;
        this.surname = surname;
        this.add1 = add1;
        this.add2 = add2;
        this.add3 = add3;
        this.postCode = postCode;
        this.phoneNumber = phoneNumber;
        this.email = email;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.my_row, parent, false);
        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder holder, final int position) {
        holder.idText.setText(String.valueOf(id.get(position)));
        holder.nameText.setText(String.valueOf(name.get(position)));
        holder.surnameText.setText(String.valueOf(surname.get(position)));
        holder.add1Text.setText(String.valueOf(add1.get(position)));
        holder.add2Text.setText(String.valueOf(add2.get(position)));
        holder.add3Text.setText(String.valueOf(add3.get(position)));
        holder.postCodeText.setText(String.valueOf(postCode.get(position)));
        holder.phoneNumberText.setText(String.valueOf(phoneNumber.get(position)));
        holder.emailText.setText(String.valueOf(email.get(position)));

        holder.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
    }


    @Override
    public int getItemCount() {
        return name.size();
    }

    public class MyHolder extends RecyclerView.ViewHolder{

        TextView idText, nameText, surnameText, add1Text, add2Text, add3Text, postCodeText, phoneNumberText, emailText, delete;

        public MyHolder(@NonNull View itemView) {
            super(itemView);
            idText = itemView.findViewById(R.id.idText);
            nameText = itemView.findViewById(R.id.nameText);
            surnameText = itemView.findViewById(R.id.surnameText);
            add1Text = itemView.findViewById(R.id.add1Text);
            add2Text = itemView.findViewById(R.id.add2Text);
            add3Text = itemView.findViewById(R.id.add3Text);
            postCodeText = itemView.findViewById(R.id.postCodeText);
            phoneNumberText = itemView.findViewById(R.id.phoneNoText);
            emailText = itemView.findViewById(R.id.emailText);
            delete = itemView.findViewById(R.id.btnDel);
        }

    }
}

Customer Class

Java:
public class Customers extends AppCompatActivity {

    RecyclerView mRecyclerView;
    CustomerDB myDB;

    ArrayList<Integer> id;
    ArrayList<String> name, surname, add1, add2, add3, postCode, phoneNumber, email;

    CustomerAdapter customerAdapter;


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

        mRecyclerView = findViewById(R.id.recyclerView);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));


        myDB = new CustomerDB(Customers.this);
        id = new ArrayList<Integer>();
        name = new ArrayList<>();
        surname = new ArrayList<>();
        add1 = new ArrayList<>();
        add2 = new ArrayList<>();
        add3 = new ArrayList<>();
        postCode = new ArrayList<>();
        phoneNumber = new ArrayList<>();
        email = new ArrayList<>();

        storeDataInArrays();
        customerAdapter = new CustomerAdapter(this, id, name, surname, add1, add2, add3, postCode, phoneNumber, email);

        mRecyclerView.setAdapter(customerAdapter);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));


    }

    void storeDataInArrays() {
        Cursor cursor = myDB.ViewData();
        if (cursor.getCount() == 0) {
            Toast.makeText(this, "No Customers", Toast.LENGTH_SHORT).show();
        } else {
            while ((cursor.moveToNext())) {
                id.add(cursor.getInt(0));
                name.add(cursor.getString(1));
                surname.add(cursor.getString(2));
                add1.add(cursor.getString(3));
                add2.add(cursor.getString(4));
                add3.add(cursor.getString(5));
                postCode.add(cursor.getString(6));
                phoneNumber.add(cursor.getString(7));
                email.add(cursor.getString(8));
            }
        }
    }

}

any help would be appreciated

Lovestruck Game

Hi, I am facing issue that my Google Playstore not working right now and I want to download "Lovestruck" game. I've search alot to find a download link source here https://androidforums.com/forums/android-apps-games.4/ Can anyone please provide me any source from where I can download this game? Thanks,
is it not in the playstore?

is it this game?
Lovestruck Choose Your Romance

Why does my tablet lag too much?

As @ocnbrze said.
This is te main reason that I have never had a tablet.

The fact is, I can get a phone and use it as a tablet for much less money.

Literally, a $40 phone will run circles around a $100+ tablet.

I dont like that fact, but it is what it is.

I pride myself on being able to do more with less, and my devices pale in comparison to the vast majority of those owned by folks on this site.

But I still do more than most do with my devices.

That being said, for the same (or even more) money, I could not justify the loss in performance if I were to use a similarly priced tablet instead of the phones I use.

Cannot play Pandora

Ok, send that one to the electronics recycle.
Thanks mikedt.

Next tablet, same goal, different symptoms.
Toshiba, model AT7-C, Android 4.4.2
Get connected to Wifi, open Chrome, it proclaims that I must update. Jump through all the hoops, log on the the google account, and try to update. Touch the button "Install" and there is a message: "You don't have any devices"
Obviously I do, the one I am using.
I don't recognize anything that looks like: Add this device.
How might I convince Google that I have a device? Specifically, the one in use.

Tried Firefox, reported that Firefox is incompatible.
Tried MS Edge, reports "Can't download Microsoft Edge: Web Browser"
What else might I do? Or is this 0 for two.
Yes, they are old, but Pandora worked before and I don't care how old it is.

Thanks for your time.

Help Forgotten Pixel 3 passcode

Sorry for the delay in replying. Thanks to you who offered suggestions. Fortunately, the correct pattern was remembered and the phone is back in working order!

I understand the password/passcode/security pattern processes have to be robust, but it seems more like a deterrent to using them if regular joes like me can't use our device if the password/passcode/security pattern is forgotten. Having the only recovery option being a completely "nuclear" process (the factory reset) just isn't a good option. If only phone manufacturers could come up with a better way. (I'll keep living in my dream world, thanks!)
The problem with a "better way" is that what makes it easier for you makes it easier for the bad guys.

The priority from the start has been preventing access to data, which is why the reset is the one way past. But with Factory Reset Protection you need to remember your Google account password if you want to get back in after a reset - that was instituted to deter hardware theft (where the thief doesn't care about your data, resets the phone and sells it to someone - ensuring that a reset doesn't give you a working device is intended to put a stop to that).

When it comes to the method itself, I'd say, you have to be pretty lucky to even hit the requirements (USB debug+non-encrypted).
Especially since all phones for the last 6 years or so have been encrypted by default.
That's the trouble with old recipes: they linger in search results long after they cease to be relevant, and create false hope in those who don't know.

Bad quality Google Maps JS imagery on Android

I'm developing an app which displays a google map (satellite layer) into a web view. Thus, I'm using the Google Maps JavaScript API. I've noticed the JS API imagery is low quality and quite blurry on Android, but not in desktop chrome. Not only in my app, but on any site that embeds a JS Google map.

Take as example the maps JS API hello world example (satellite layer):
  1. In desktop chrome, using device simulator, the imagery is sharp
  2. In the google maps android app, the imagery is as sharp
  3. In android chrome, the imagery is blurry and ugly.
Below are two examples. Left pic in each image is the JS hello world map linked above, in chrome on android. Right pic is the same exact are in the native android google map app. In a desktop browser, the JS imagery would look as sharp as in the android app. Click on the pic twice to view it at 100%.


left: JS gmap in chrome android, right: android google maps app




left: JS gmap in chrome android, right: android google maps app

Now I don't know if that's how mobile JS maps should look like or if there is a problem with my phone. Two things I've tried that solved the problem but induced other issues: Add `zoom:0.5;` to the div of the map, or change Smallest width from 392dpi to say 800dpi in Developer options on the phone.

It somehow feels like on mobile the browser zooms in on the map. In desktop chrome, if I set the browser zoom to 150% I get the same sort of ugly pixelated map.

Filter

Back
Top Bottom