Android SMS content provider - android

I have a client who want an app that would run "perfectly".
He asks me if there is any way of pulling off the entire list of SMSs for a certain contact in order to send it over to a webserver.
I know that the SMS content provider is not part of the official SDK but I don't understand what does this exactly mean.
Can anyone explain me the issues with the SMS CP and what are the risks of using it in my app?
Will the app still be able to run without issues, as my detail-oriented client wishes?
P.S. Do not close this question. I do not ask for personal opinions, I ask for technical explanations.
Thanks.

It won't run perfectly, the SMS not being part of the public API's means its not guaranteed to be standard across the board, for example you may get your app working on standard Android on a Nexus device but HTC/Samsung and all other brands will have slightly different content providers depending on their needs and designs meaning your app will break on these content providers.

Related

Best way to manage ios and android applications simultaneously

When I build a web application, like most others, I simply build an admin area from which the client can control their site.
Most applications I build for android never require this kind of maintenance as they are all self contained. However Something I'm extremely curious about, say you build a cross platform application that does require constant maintenance; you've got 2 versions - an iOS and android version. What would be the best way to go about managing both applications from the same place?
For examples sake, let's say you build a real simple application. It could be something that once a day sends you a message, "hope you're day is going well" or "let me tell you a joke". Now what if those messages were hand typed and submitted to the applications, you want to log into a system, type the daily message in and both applications are simultaneously updated with the new message.
In my head I'm imagining you would need to build a dedicated admin system either as a web application or standalone desktop application that connects to the apps hosted database however I'm wondering about how well that would work, what kind of problems are you going to run Into, would it even be feesable?
I've never had to build something like this but some of the more recent web applications I've built would work well as straight forward applications and that just gets me thinking, if I was asked to turn them into apps that function the way they do already, what would be the best way?
It's something I'm really curious about and feel like I need to get my understanding on the right track.
I think you are describing an application for an admin that will set up (write) data to be used by users of Android and IOS apps. Few options:
Write the admin application as a regular web application. Be careful to use transactions in the code that writes to the database. That is to avoid inconsistent DB states when your admin applications DB writes interleave between mobile app reads. Also you have to secure the admin REST resources (API end points) for admin access only, so you would need authorization code in the app.
Write admin apps for the mobile platforms (or an admin section in the existing app that is properly authorized in the app code) and the server API end points. That is more tedious because of 2 platforms. Again you will need the DB transactions and authorization code
Write separate admin apps for mobile but with one framework (Xamarin). It will work for simple apps and yours sounds simple enough for Xamarin to work well.

How to detect users of my app who open it using an emulator on the PC

I have an app that has some unknown devices listed in the analytics portal I use.
I was wondering if Android and iOS have a method that I can call which tells me if the app has been downloaded and opened using an emulator?
I've thought of accessing the device's IMEI, but this is only for mobile phones and doesn't cover tablets. Any help would be greatly appreciated.
You can try filtering out the Connecting device's by their device's model number, name and id.
For that you first need your app to parse the data from the phone, and then send this data to your server while authentication.
The server checks the robots list and then authenticates the exceptions (genuine users).
NB: Nowadays emulators are updated, they are capable of spoofing a Device Name, Model and ID. So it's a hectic job to detect spoofer's.
Just a Mere Concept out of Thoughts, Might possibly work!
There are couple of methods out there. Android includes a built in method,but some of them can be maneuvered.
Android includes some system properties that keep such information. they can be accessed using the getprop utility and there are ways to get the problematically.
More specifically, the "ro.build.characteristics" will contain the word "emulator" when running on emulator.
Long story short: There are couple of libraries that are capable of doing this and are consider reliable.
Here is a good example:
https://github.com/framgia/android-emulator-detector
For iOS see this answer
As a side note. if you are concerned about having a safe environment to run your application, take a look at SafetyNet

Accessing message contents of an android phone using Python

Here's what I want to do.
I have a Samsung galaxy phone whose message box is full. I want to download all the SMS messages from the mobile phone to my computer the Pythonic way. Before I decided to pose this question, I did a quick research on the internet, SO for possible answers.
I hit this lead and this lead here on the internet. These tutorials are quite extensive but do not provide the basic information of accessing the device and display its contents on a screen on my computer.
I read up a little more on using Twilio and other websites, but then that requires connecting to the internet and exposing my phone for the websites.
For now, I just want to access the SMS messages and display them as, perhaps, lists may be. Not the complicated stuff of automating, etc. There sure must be a simple method of doing this?
To access messages on an Android phone directly, you'll need to read the "mmssms.db" file. This is located at data/data/com.android.providers.telephony/databases/mmssms.db, and is an SQLite database. However, this requires root to read. If you have root, use the SMS-tools library here.
If you don't have root access to your phone, you can likely use a built-in Android backup tool to save your SMS messages to your Gmail account. You'd then be able to scrape the messages, or potentially use the Gmail API to retrieve them.
You can use "SMS Backup & Restore" app from Google Play and then manipulate generated backup file with Python. No need to write Python app for Android
Also, you can't backup sms in Google account, like the other answer says
I haven't experimented, but have a look at this page: https://groups.google.com/g/kivy-users/c/3ToGSpc0_1w.
It looks pretty promising for accessing the sms history.

Send text to app (not specific phone number)

I don't know if this is even possible, couldn't find anything usefull on the internet.
I wanted to make an app, that me and some of my friends could send a message trough "my app" and that everyone who has that app, receive the message, without using a phone number.
So basically, same as WhatsApp GroupConversation, but then without using a phone number.
Is this even possible?
If it is possible, could you put me on the right track to start with.
Hope I am clear enough, if not, tell me :)
Edit:
This just pops up in my head (didn't look on internet yet), but what I want, is a kind of a shoutbox.
This is possible, in fact WhatsApp does not use your phone number for this at all.
You simply provide your phone number to asure a unique ID and proof that you are indeed in possession of this phone with the validation SMS.
From there on, your phone number isn't even used anymore.
You can go 2 ways with this;
Create a simple webservice with a database on which you just save and request messages. Maybe make a little difference between get all or get latest message. Anyone, hooking into the group, can just fetch the same data. With the use of GCM push notifications, you can make this pretty instant.
Use XMPP, which is a chat protocol kinda all the chats use. Whatsapp, Google talk, FB messenger... This will provide you with instant messaging just like any other chat app or program you know.
Option 2 is by far the best in final functionality, but be warned that XMPP is quite complex and error prone.
You can look into the asmack and asmackx libraries for Android, which will give you the basic functionality with ease. Going a bit deeper, you'll have to dig into the protocol and really get to know it though.
ps. For both you'll need your own server, however with asmack(x) you are also allowed to use Google's Talk servers for free. Communication will go through your Gmail account. Basically with this you just make your own version of Google Talk.
It is possible by implementing server-client architecture. Your app will use a common database for all the users. whenever an user install your app, he will achieve an unique user ID. if anyone uninstall it, his id will be destroyed. You can track the users from those ID in database. You don't need phone numbers.

What does it take to sync a contact/calendars web app with mobile devices?

I have been developing a web application in PHP that provides contact and calendar management. This application needs to sync its contact and calendar data with mobile devices (specifically Android, Apple, and Windows phones).
I have no experience in mobile development, so I am mostly looking for guidance. It is difficult to know what to even search for because of this lack of experience. I am mostly looking to know what is possible and what is not.
The overall goal is to be able to edit contact/calendar data from anywhere, whether that be from the web application itself or a mobile device. These changes will then be reflected no matter what tool you are using to view it. A very loose comparison is an IMAP server. One central data source where any app can hop in and view/manage e-mails.
My web application can currently handle HTTP requests using XML data. So it can send out data and have data POSTed into it.
This is where my knowledge ends. I have little insight as to what would be required of the device itself to be able to sync. If a user adds contacts to a mobile device's default contact/calendar application, how can it be told to sync with my web application? Does this mean developing an app for each mobile device in order to act as a medium between my application and the mobile device's default contact/calendar data?
Is it possible to access the internal contact/calendar data of a mobile device? Can that data be pushed to an external server or be modified by that same server? What is required on the web application's side? The mobile device's side?
These are the sort of questions I am looking to be answered. There might be questions that I haven't even thought of that I would also love to be discussed. If my question is too general, please specify anything to be clarified.
In case of iphone you have to write your own app. I would recommend to use a database (sql) on your server, then every time the application opens you can check if there are new entries on the server and load them if needed.
I think it will take you some time to get the basic knowledge about ios programming but it isn't a hard job at all.
Things you should check:
requests
uitableview(/delegate)
Event kit
There are good tutorials to learn this stuff.
One good site:
http://www.raywenderlich.com/

Categories

Resources