Mobile: Accessing/sharing/modifying content/elements in other apps - android

Today in browsers, various mechanisms exist to access and modify a web page. These can be implemented normally via extensions who employ various DOM access technologies such as Mutation Observers. This feature, for example, allows an extension to detect the life-cycles of DOM elements and augment them or even insert its own DOM elements at appropriate times and locations.
In mobile, I'm aware of Lastpass that employs a technique somewhat akin to this, where it is able to detect userid and password fields and auto-fill them. It seems they use mobile accessibility features to accomplish this (at least in iOS). I'm sure there are more apps that can do similar things.
However, I'd like to push this further, and be able to read the content/elements of another app ('serving app') at the very least and manipulate it and display it in our own app ('client app') much like the extension example above. A simple example can be an app that streams content, where we want to read this stream, filter, augment it, and display it in our own app. Even better, be able to augment it in the app itself and not need to import it into ours. Note, the serving app is not necessarily aware of the client app and does not share protocols, app ids, etc. BTW, I am aware of iOS's sandboxing, inter-application communication, and pasteboards.
What is the current state of mobile software development whether hybrid, indigenous, or progressive web application development in this arena (iOS and Android)?
For example, if we're in Twitter, we'd like to change the color of a tweet from blue to green or insert a 'star' object at a particular spot in the tweet, where pressed will copy it into our own app. Something along those lines.
Any thoughts on this (iOS and Android) will be greatly appreciated.

For example, if we're in Twitter, we'd like to change the color of a tweet from blue to green or insert a 'star' object at a particular spot in the tweet, where pressed will copy it into our own app. Something along those lines.
I cannot speak for iOS. On Android, what you want has never been possible, for obvious security reasons. An app has no means of directly modifying the UI of another app, except perhaps on rooted devices (where ordinary security restrictions can be bypassed) or on custom ROMs (where you can build in security weaknesses that meet your needs).

Related

Enhance(/manipulate) a few popular android app's text(/visual) outputs! (examples: whatsapp, gmail, facebook, ...)

Think you ideally needed to mark up or censor a list of keywords in visual output systemwide, yet cant require to root devices.
That still works on websites through browser plugins.
But is it any thinkable to mess with popular apps like whatsapp, facebook, (one at a time) ?
Reading: I know it is possible to read/change some text inputs yet not generally/all? http://developer.android.com/training/accessibility/service.html
A universal way for markup could be determining screen coordinate positions of contents by OCR and set transparent overlays on the fly + algined smooth with scrolling, just not convinced how well this can both work and be battery efficient (we could cope with low accuracy in text recognition)
I'm adding all my reputation as a bounty.
Laying out a good way for any one popular app (top 20 social apps) qualifies as an accepted answer!
Laying out solution for "1." only but for two or more apps also qualifies.
Showing specifically why/where it will work with one app but not with another also qualifies as an accepted answer.
You cannot modify the visual output of an app. The closest thing you can do to accomplish this is like what Facebook Messenger and LastPass use, which is a feature that allows them to draw over the top of other apps, and LastPass specifically can also read the contents of another app via accessibility permissions. However, that just allows them to draw over the existing apps, and in the case of LastPass, fill out text into input fields. Even with the above options, I don't think you'll be able to accomplish what you're looking to do.
I don't think it's possible. Each app on the Android runs in its own sandboxed environment. You can only communicate through Intents with other applications. So unless they're listening for bad Intents(which I hope they're not), you can't really do anything to those applications.

Creating softkeyboard with custom emoji

I have been tasked to create a new android 3rd party keyboard that supports customized emojis (My own Icons) from assets.
I want to implement a softkeyboard with my own emoji icons without using UniCode or my custom UniCode.
Questions:
If I create a custom emoji, with some string of characters which does not map to the standard set of emojis, and text this message to a friend with the customized app/keyboard, what shows up on their device? The regular ASCII characters string? or the image.
I have read two ways to add image to textView.
Html.ImageGetter
Spannable Image (String consisting of image)
Which way should i prefer?
Is there anyway to display(send) the customized emoji on the recipients device without downloading the app/keyboard?
Is it possible to send text with Image(Emoji) to other apps like facebook,skype and for messaging.
Need suggestions.
Simple Words
I simply want to send my custom(Emoji icon) to other apps as this app does with out using unicode or with my custom UniCode.
Thanks.
To answer the first part of your question, by definition Emoji are encoded characters - they are a part of unicode. See here:
http://emojipedia.org/unicode-8/
There are many references to this if you look. You will also discover that for a long time Apple and Google used two different sets. They are now merged, but then Android manufacturers and carriers have added their own emoji "versions."
Changing the keyboard to have custom images will not change the data that is transmitted to the other device. So, to answer the next part of your question: what shows up on their device is whatever the ASCII or Unicode character that was transmitted, not what the sender "typed."
In other words, to answer the next part of you question, generally speaking there is not a way to send custom characters to another device without them having your app. A keyboard would not suffice because apps do the job of displaying text/images. So unless an app knows that you are the content provider or source or whatever of the image, it will display whatever it knows to do. So, a custom keyboard won't even display custom emoji on your own device, unless you are also using your own app.
I said "generally not possible" because here are your options:
You can become a part of the Unicode Consortium (http://unicode.org/) and submit your emoji images for approval to go into a future version of Unicode. There are future emoji already in the works, FYI. That will likely take several years, by the way, and it's unlikely they will approve commercially biased images. However, unicode has the capacity to handle billions of characters and is hardly even close to being full (Unicode 16, not Unicode 8 - Unicode 8 is full). Even then, the Android team would need to adopt it and include it in a future release like smileys and the current set of emoji are.
You build your own app with your own emoji and get people on both sides of the communication to download it, like everyone else does. IMO, this not ideal for anyone but the developer of the app. Still, the ones that people enjoy I applaud for their work and success. That industry is fickle and difficult to really gain a presence in.
I'm a part of sdmmllc.com - and we're trying to develop a messaging "platform" exactly for situations like yours. We want to allow messaging apps to "discover" other messaging apps, incorporate features like custom emoji, without the user getting confused or having to download tons of apps. This is similar to plug-ins in web browsers. Our developers love us, our users love us, but it's a slow process.
Develop a competing platform. (And good luck with that - no one really seems to be getting the concept, except the few developers we have, and the hundreds of users that download our app every day and love our idea and platform... but there's no money it so far...)
you can only use those uniCode which are supported. you cannot add your own for generic use. But you can use it with in your app and between your app. It is not possible.
In short it is not possible to create your own Unicode. But you can do it with app to app. and on both ends you have to store those character in database. and match them when they get..

Mobile devices: Most user friendly way to create "copyable" text field?

I'm working on a servlet based app that serves content meant to be copied and re-used by users on mobile devices. As of now I'm serving the content (a String) in an input field.
This works fairly good on iOs devices, but rather poorly on Android. Thus I'm wondering if there is a better way to make select and copy easier?
I've tried looking into using jQuery to do the select and copy part, but as far as I can tell this only works using a combination of flash and native languages on their respective platforms. As this app is meant to be compatible on (hopefully) all platforms (W7P as well) this is the least preferable option.

How does sharing application components happen in android?

it's been some time now, since I started reading about android.
I've already made a few basic applications, but I still miss something: How is actually sharing application component being done?
This is what the Android Dev Guide says:
A central feature of Android is that one application can make use of elements of other applications (provided those applications permit it). For example, if your application needs to display a scrolling list of images and another application has developed a suitable scroller and made it available to others, you can call upon that scroller to do the work, rather than develop your own. Your application doesn't incorporate the code of the other application or link to it. Rather, it simply starts up that piece of the other application when the need arises.
I think I came across some question like this, but I think I'm still confused.
Is the only way of getting such a 'private application' information to contact the developers of that application?
Is information about the data that the application operates with private, too?
If it is described in the AndroidManifest.xml file is it available for the other applications, or it is available only to Android?
When I started satisfying my interest in Android - one of the things that grabbed me was the impression of immense interoperability...
:)
Have I been wrong or I still haven't found the way?
Thanks!
How is actually sharing application component being done?
That depends entirely on what you consider an "application component" to be, and what you consider "sharing" to be.
This is what the Android Dev Guide says
That is a fairly bad piece of the documentation. Here is how I would write it:
A central feature of Android is that one application can make use of components (e.g., activities, services) of other applications (provided those applications permit it). For example, if your application needs to display a list of contacts and another application has developed an activity that does just that and made it available to others, you can call upon that activity to do the work, rather than develop your own. Your application doesn't incorporate the code of the other application. Rather, it simply starts up that piece of the other application when the need arises.
Is the only way of getting such a 'private application' information to contact the developers of that application?
Either developers are intending for you to integrate with them, or they are not. If they are, they should be documenting how to do that (e.g., Intent formats to be used with startActivity() to trigger their code). If they do not document such integration points, you can certainly ask the developers to add some. However, randomly shooting Intents at them in hopes of getting a response, even if it temporarily works, is little better than script kiddie tactics -- those developers are not obligated to ensure you code works when they upgrade their app.
Is information about the data that the application operates with private, too?
I do not know what "information about the data that the application operates with" means. Data managed by an application is private by default. Again, application developers can offer integration points for data (e.g., content provider, remote service API) -- some do, some do not.
one of the things that grabbed me was the impression of immense interoperability
Android offers greater interoperability potential than some other mobile platforms. However, using that potential requires consent among the interoper-ees. You cannot unilaterally decide to hack into another app's database, or invoke private activities, just because you feel like it.
Should more Android developers offer more integration points? In the abstract, sure. However, bear in mind that this adds support costs (e.g., answering integration questions) and limits coding flexibility (e.g., need to maintain a stable API for those doing the integrating). Developers cannot be blamed if they do not wish to incur all that.

allow users to create forms within android survey/data collection app

I'm trying to develop an Android app that could be used by advocacy groups or campaigners such that they would be able to create their own forms (surveys) for which they can go out canvassing and collect opinion data from people who don't have Internet connections and thus can't take surveys/polls online. Could also be used at events or anything else that requires data collection "in the field"
The benefit is allowing data collection on the spot without having to transfer data from paper to the office computer by hand.
I've been looking over this tutorial by Frank Abelson: http://www.ibm.com/developerworks/xml/tutorials/x-andddyntut/section6.html
And have also been pouring through the Open Data Kit, but the ODK is a little more intense than I am prepared for and the Abelson tutorial doesn't discuss much how users could create their own forms.
I suppose users could just create their own XML files for custom forms in the office and store them on the server, but I was wondering if there was a way for them to do this on the Android app?
Just a hint about possible architecture or simple resources would be helpful, I am having a hard time picturing the solution at the moment.
i'm one of the developers of open data kit. odk has been successfully deployed by organizations all around the world for exactly what you describe.
we have a graphical form designer (and good alternatives in purcforms and xls2xforms), a server to host the forms, and an android mobile client (and good alternatives in javarosa). all the pieces are free, open source, and are driven by an active community.
if you could list what specifically about odk doesn't fit your needs (say, a need form design on the phone), i'd be could recommend alternatives...
ODK is a fantastic open source solution. A potential commercial alternative you can also try is Canvas at http://www.gocanvas.com which allows you to replace paper based forms with your mobile device.
It currently runs on Android, Windows Mobile and BlackBerry with iPhone and iPad support coming soon.
To get a quick overview of how to use Canvas:
Build a standard data collection app in 5 minutes and see it running on BlackBerry
Build a signature capture app in 5 minutes and see it running on Android
Hope that helps some,
-Chris
You should look into Fulcrum. I believe there is a 30 day trial period see if this software works for you. This is a one stop shop for mobile data collection teams. You can easily build your data collection forms right from your web account to include photo fields, text entry fields, choice fields, form sections, and repeatable sections. Repeatable, meaning parent-child relationships within a single data point.
They even have an App Gallery with a exemplary apps (forms) that allow you to use as a sort of "cheat-sheet" to get started. Here is the political canvassing survey they posted.
-P.Reyes
Check my project here: https://github.com/AndreiD/surveylib
PROS: Simple solution, open source, without any overkill, you don't have to display any logos, it doesn't cost a thing, it's easy to be extended, material design etc.
CONS: You must have the server part, for the transmission of the answers data.

Categories

Resources