Android : Content Provider Implementation - Original Data Stored On Network Or Local/remote File Systems
Jun 13, 2010
I'm now trying to implement my own content provider. My original data was stored on network or local/remote file systems, so I want to provide data via input stream. I know that client may call ContentResolver.getnputStream to retrieve the input stream to access data. But I don't know how to implement content provider in this situation, I searched the Internet but all the tutorials for content provider are talks about how to expose data that stored on local database. how to expose data that stored on file systems using a content provider? what happened when client call ContentResolver.getnputStream? I want to know how to return an input stream to my client.
I am having a hard time understanding content providers. In the notepad example and others, the content provider never even declares its CONTENT_URI anywhere inside itself, yet the docs say to publicly declare this. It's declared in a different class. So when an activity queries a content provider with a CONTENT_URI, how does Android know which one I want. I see no link between a content provider and its CONTENT_URI declared in another class.
I also don't how to think about intents and content providers. I know that you don't call an intent on a content provider. But an activity queries a content provider without an intent, and an activity has a mimetype attribute in the manifest that would seem to tie it to a content provider.
how can i create a custom content provider like contact content provider? i know how to create custom content providers but i want to integarte to device such a way that it canbe accessed by all application installed in that device.
My requirement is to open one app's Asset file from another app via content provider.(I am exposing that file with ContentProvider implementation)I am able to open few files and read, but while opening some files I am getting exception. Please find the implementation for opening Asset File.Can anyone point out me, in what scenarios, we will get this exception.
How could I create a ContentProvider where the data is fetch from the internet. As the data is parsed maybe allow the requesting client know the download progress and results so that they are displayed as it's downloaded. My idea is to share this data across other apps. I'm not sure if a ContentProvider would be the solution?
I'm writing a ContentProvider that will provide content that is not stored in a file or database.I understand hat I have to overwrite openAssetFile() method.My problem is that I don't know how to create AssetFileDescriptor from data in memory (byte array or stream).Can anybody please point me to the right direction?I was digging in Android source where they use MemoryFile but I can't obtain ParcelFileDescriptor from MemoryFile.
I need to write a ContentProvider to provide a dynamically generated audio stream to be playable by MediaPlayer. That is MediaPlayer will use ContentResolver.openInputStream() to play it. I have read a lot of discussions about this problem but no one had a solution yet. The most recent one was in January 2010: http://groups.google.com/group/android-developers/browse_thread/threa.
In my app i need to read the data at a content provider before the system actually initializes. Probably what i understand is that a boot complete intent would launch a homescreen activity.Exactly before the system initialized i want to see the data provided by the content provider and use it.
I'm writing a content provider that returns data about game sessions. This data comes from an SQLite table. However, the client that consumes it will also want summary data: total wins, current/best winning streak, and so on. I'm not sure which approach to use.
* Possible Approach 1: Do nothing, let the client calculate what it needs.
The client could step through the whole table and calculate statistics itself. However, it's inefficient to send the entire database over the content provider link if the client only wants the summaries; this may also be prone to bugs because each client has to reimplement the summary calculations.
* Possible Approach 2: Separate content URIs for summary data.
The client could ask for a URI like content://myapp/summary/totalwins and get back a text/plain stream containing the number of wins. This seems like a big hassle to implement on both ends, though. Or it could ask for a URI like content://myapp/summary and get back an XML stream containing all the summary data, but this isn't much simpler.
* Possible Approach 3: A phony table.
The client could ask for a URI like content://myapp/summary and get back a cursor over a single row, with each summary value having its own column. This would not be an SQLite cursor but a custom in-memory cursor. It seems a little unnatural to use a table metaphor when there's always exactly one row, though.
* Possible Approach 4: The extras bundle.
Cursor has a getExtras() method that returns a bundle. The client could make a request for the main URI, content://myapp/sessions, and then just look at the extras bundle instead of reading any rows. However, there's no setExtras() method, so I'm stuck with whatever bundle object SQLite puts in there - and if it's Bundle.EMPTY, I'm out of luck.
I looked into some examples of sharing data to other apps using content Provider. All these examples talks about sharing sqlite dbs. I need to share data under shared Preferences of my app to other apps using content Provider. Can I use content Provider to do that ?. Please let me know some pointers or sample code to share data other than sqlite db using content provider.
Is there a standard native Android content provider that will return data listing all of the apps currently installed on the cellphone. Something like open()/readdir() on a Linux bin directory.
Given that you know an app is installed on an Android cellphone, and you know that apps name, how do you launch that app from a completely different and unrelated app. You might not know which Intents/Broadcasts/URIs the app you want to launch is listening for. And not all Android apps are written to respond to Intent/URI broadcasts or requests.
I needed to call a remote service. The service basically fetches data from the network. I am bind the connection once,and then I unbind the connection when the user is no more in that page. Everything works fine.Except that when I call the sa,e remote method for 17th time,it just does not call the service at all.It neither throws the DeadObjecti Exception. I have run out of ideas.Is there anything that I may be missing.
Please direct me to a description of the techniques that the ContentProvider employs to access data. I am trying to understand how it works as well as what is tunable or even if its meant to be tunable. It the memory management tiered, cached, virtual, flat? Is it file based, shmem based, stream based? Can there be a combination thereof?
Any information, suggestions, or references are welcome. The android fundamentals page says: "The data can be stored in the file system, in an SQLite database, or in any other manner that makes sense;" but the android ContenProvider page barely skins the onion.
I am using Samsung Galaxy III , Android 4.1.2 , model is GT-I9300
I want to locate the file where the Personal Language Data is stored (Predictive text)
The Keyboard I use is Samsung keyboard.I went to Samsung Keyboard Setting > Predictive Text > Personalized Data is check on. I can not find any clue how to export this data to a text file or database file so i can browse / edit it or transfer it to another device.
I'd like to be able to read the system's SMS content provider. Basically I wanted to make an SMS messaging app, but it would only be useful if I could see past threads etc.It seems like there's a content provider for this, but I can't find documentation for it - anyone know where that is?
my android application is handling a large database of bus passage time and we would like to allow others application to be able to display certains bus passage time. We would like to use a content provider to do that. Most example seems to be about using an SQL database, but we use some custom text file. I was wondering what would be the best way to do that. I was thinking I could use a Content Provider and implement the Cursor interface on a custom object that I would manually fill with my text data. Would this be possible ? Anyone have a better idea (excluding changing to SQL lite of course)?
I want to download my apk file into "/data/local/" directory. I am able do this in external storage but unable on "/data/local" also i was trying to create folder on same location but could not do that. Through "adb push" it is possible but i need to do this java program.
Im having problems with the content provider. Im trying to create a content provider.Is my URI parse been parse correctly?this leads to my database as I want to extract data from it and show it in the list view.after which, i have to edit the manifest inserting the provider if I extend my class to ContentProvider, my database file will be kinda screwed up, is there an easier way?however, it shows the error of not having the one.two.databases to exist.
I would like to know the exact difference between Content provider and SQLiteDatabase. If we have to share our data among applications then we use Content provider, otherwise SQLiteDatabase. Is this is the ONLY difference, OR using Content Provider has something to do with performence?
I am performing hundreds of calls to a single content provider to perform various insertions, updates and deletions. After profiling my application, I have noticed that the ContentResolver class takes approx. 30ms to retrieve the corresponding content provider object for each call. Is there anyway to retrieve a reference to the content provider rather then going through the ContentResolver every time?
I have written the following content provider, but when I try to pull information from it into an array,I presume its something to do with my naming of the CONTENT_URI or something? I'm not quite sure how it works so could anyone explain a bit and spot what I have done wrong?
I want to delete Downloads provider data. And I have added permission in AndroidManifest. xml,But it doesn't work, the log gave me a pid and an uid, I guess the problem is caused by these two ids.If it's true, what can I do to solve this problem.