tag:blogger.com,1999:blog-8214401912480503366.post4613856573704875996..comments2023-08-10T13:35:15.093+02:00Comments on My life with Android :-): PluginsGabor Pallerhttp://www.blogger.com/profile/14307475522972458932noreply@blogger.comBlogger31125tag:blogger.com,1999:blog-8214401912480503366.post-76179079025512865602014-09-02T22:49:30.972+02:002014-09-02T22:49:30.972+02:00The server works for me. Does the problem persist?...The server works for me. Does the problem persist?Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-55040121273834326082014-08-31T15:09:16.570+02:002014-08-31T15:09:16.570+02:00I can't download the code. Server under mainte...I can't download the code. Server under maintenance. Please help. Thanks.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-60987291121952345002014-05-27T20:08:58.474+02:002014-05-27T20:08:58.474+02:00How to write language plugin in android? THanksHow to write language plugin in android? THanksShopeehttps://www.blogger.com/profile/00491945960038766934noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-16497594492905175782013-03-14T04:22:15.783+01:002013-03-14T04:22:15.783+01:00Which plug in I need to install on my Android Tabl...Which plug in I need to install on my Android Tablet to view Stand Alone DVR cameras.<br />I can connect to DVR but can not open the files and see the pictures.<br /><br />Thank you very muchAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-4666743763796558792012-09-15T19:57:47.173+02:002012-09-15T19:57:47.173+02:00Anonymous, you are referring to these lines in Plu...Anonymous, you are referring to these lines in PluginApp.java:<br /><br />Intent intent = new Intent();<br />intent.setClassName( <br />"aexp.pluginapp", <br />"aexp.pluginapp.InvokeOp" );<br />intent.putExtra( BUNDLE_EXTRAS_CATEGORY, category );<br />startActivity( intent );<br /><br />Here we just start the InvokeOp activity that presents two text fields and invokes the selected service plugin with the values of those text fields when the invoke operation button is pressed. Hence the category (that really identifies the plugin) is just passed as a parameter to the InvokeOp activity. In InvokeOp, however, the category is correctly used to select the plugin service:<br /> opServiceConnection = new OpServiceConnection();<br />Intent i = new Intent( PluginApp.ACTION_PICK_PLUGIN );<br />i.addCategory( category );<br />bindService( i, opServiceConnection, Context.BIND_AUTO_CREATE);<br />Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-56017826895631130092012-09-12T22:10:24.281+02:002012-09-12T22:10:24.281+02:00Thank you for the answer, Gabor, but it looks like...Thank you for the answer, Gabor, but it looks like my question was not quite clear to you, my apologies. The question is not about selecting packages from globally available ones, but about the way how we invoke a specific plugin from the list in onListItemClick. How a plugin (identified by a category) can be invoked via an intent without this plugin's category being passed via intent.addCategory? I see you add the category into the intent's extra by putExtra, but I'm not sure if this is equivalent to addCategory. Could you please clarify this?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-29265165736528416302012-09-12T19:44:33.185+02:002012-09-12T19:44:33.185+02:00ada, I have my linkedin page's link in the upp...ada, I have my linkedin page's link in the upper right corner.Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-57211646088154887452012-09-12T14:00:00.127+02:002012-09-12T14:00:00.127+02:00Stan, please observe fillPluginList() method in pl...Stan, please observe fillPluginList() method in pluginapp/PluginApp.java. This method explicitly looks for packages that listen to ACTION_PICK_PLUGIN action and uses the category to distinguish among them. This is just a marking that Android offers and we use to discover packages that satisfy certain criterias.Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-7632981042025522102012-09-10T20:04:47.397+02:002012-09-10T20:04:47.397+02:00It's a bit unclear how plugins get discriminat...It's a bit unclear how plugins get discriminated by category. I could understand the logic if you call intent's addCategory in the host's onListItemClick, passing a category string from the prebuilt arraylist. But you just putExtra with the category name, and plugins do not check it anyhow. Does the system do it behind the scene somehow? The only reference to the categories reside in the plugin's manifest, so I can't grasp how it works without intent.addCategory in the host. I'd really appreciate if you clarify the matter.Stannoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-25908941653440757422012-09-07T20:58:28.412+02:002012-09-07T20:58:28.412+02:00Hi,
Could you give me more information about how...Hi, <br />Could you give me more information about how to develop a application with plugin? I am new in android,I try to make my application extendable.How can I connect you? <br /><br />Thanks a lot.adahttps://www.blogger.com/profile/04867839209667989920noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-54261789936083681322012-08-14T21:14:22.156+02:002012-08-14T21:14:22.156+02:00Very useful info for newbie android developers. Th...Very useful info for newbie android developers. Thank you very much.<br /><br />-----------<br /><br />Dhanaiah <br><br /><a href="http://www.bestofandroid.com/" rel="nofollow">Best of Android | Android News | Best Android Apps | Android Games | Android Devices</a><br />Cricket Live Streaminghttp://www.cricket24hours.com/noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-19061025889443422962012-06-08T05:47:08.040+02:002012-06-08T05:47:08.040+02:00Hi Gabor!
I sent my project , but I can't find...Hi Gabor!<br />I sent my project , but I can't find the reason why it doesn't have sound + animation effect. Can you help me, Gabor?nda888https://www.blogger.com/profile/05170654579077110008noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-14656256627202131852012-06-06T11:13:43.902+02:002012-06-06T11:13:43.902+02:00Hi Gabor!
Thank you for your answering.
And this ...Hi Gabor!<br />Thank you for your answering.<br /><br />And this is my project.But I don't know why it doesn't have sound + animation effect.<br /><br />I thought a long time, but I can't find the reason.<br /><br />http://www.mediafire.com/?g7xyp9v087u5chknda888https://www.blogger.com/profile/05170654579077110008noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-19000031909225613782012-06-05T15:25:09.571+02:002012-06-05T15:25:09.571+02:00nda888, the aidl syntax allows just a limited set ...nda888, the aidl syntax allows just a limited set of types to be passed over the IPC mechanism. <a href="http://developer.android.com/guide/developing/tools/aidl.html" rel="nofollow">Here is an introduction.</a> You can extend that limited set by making your objects Parcelable but IMHO neither Context, nor any of its popular child classes (e.g. Activity) are parcelable. Why do you want to pass a context? It will be useless in the context of another application process.Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-92063925509086139012012-06-05T01:53:19.088+02:002012-06-05T01:53:19.088+02:00Hi Gabor Paller!
I'm writing an application w...Hi Gabor Paller!<br /><br />I'm writing an application with sound plugin + animation plugin following your introduction.<br /><br />But I have a problem, in my IBinaryOp.aidl I defined:<br /><br />interface IBinaryOp {<br /> void op(in Context context);<br />}<br /><br />But it doesn't understand type "Context"<br /><br />How can I do it understand.nda888https://www.blogger.com/profile/05170654579077110008noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-71613033688430149932012-05-24T10:52:37.698+02:002012-05-24T10:52:37.698+02:00nda888, I don't understand. The aidl tool shou...nda888, I don't understand. The aidl tool should compile the .aidl file into the .java file. That tool is automatically invoked by the makefile (or by Eclipse).Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-26422911190156231352012-05-24T04:34:41.387+02:002012-05-24T04:34:41.387+02:00How can I make IBinaryOp.aidl & IBinaryOp.java...How can I make IBinaryOp.aidl & IBinaryOp.javanda888https://www.blogger.com/profile/05170654579077110008noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-90595161607350277572012-05-02T18:32:38.311+02:002012-05-02T18:32:38.311+02:00Thanks Gabor :-). Yeah, option number two will pro...Thanks Gabor :-). Yeah, option number two will probably be the way to go for me. <br /><br />I don't think my plugins have enough functionality as stand alone apps to upload them to the market, and I would prefer to avoid bundling them together in order to keep the flexibility I need.<br /><br />Great tutorial by the way :-)! Your blog examples seems to be the archetype of Android plugin development.Nathaniel Ryckmannoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-4157211967680024242012-04-25T10:09:40.398+02:002012-04-25T10:09:40.398+02:00Nathaniel, the most evident solution is to downloa...Nathaniel, the most evident solution is to download the plugin from Android Market - that opens a lot of possibilities provided by the Market, including paid plugins.<br /><br />If this is not suitable for you for whatever reason, <a href="http://stackoverflow.com/questions/4967669/android-install-apk-programmatically" rel="nofollow">you can download and install the APK package programmatically.</a>Gabor Pallerhttps://www.blogger.com/profile/02390936870056951146noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-91597507097528385842012-04-24T23:17:31.308+02:002012-04-24T23:17:31.308+02:00Any ideas about how to download and install Plugin...Any ideas about how to download and install Plugin1 from a user's phone?<br /><br />Would the .apk file just have to be stored outside of the Android Market?<br /><br />Thanks for your input.Nathaniel Ryckmannoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-41130353543550257192012-03-06T15:32:03.052+01:002012-03-06T15:32:03.052+01:00It works for me only after i have commented out &#...It works for me only after i have commented out 'new' for 'services' in the fillPluginList<br />//services = new ArrayList>();<br /><br />and moved the 'new' to 'services'declaration.<br />private ArrayList> services = new ArrayList>();O.Shevchenkonoreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-35679835329230943992011-10-28T23:47:31.471+02:002011-10-28T23:47:31.471+02:00Toni, have you exported the service? (android:expo...Toni, have you exported the service? (android:exported="true" in the service tag)Gabor Pallerhttps://www.blogger.com/profile/14307475522972458932noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-48067197899757212122011-10-28T14:33:05.821+02:002011-10-28T14:33:05.821+02:00@gabor: I think i have some issues with permission...@gabor: I think i have some issues with permissions. Can somebody define logic behind this. <br /><br />Actually when I added <b>aexp.plugin.IBinaryOp.aidl</b> and in my plugin used the same package structure it worked. I think I'm not seeing something in authors code... <br /><br />But if I want to add another application with another plugin it just removes the first plugin and installs new one because of the same package name in manifest. But if I change package name i get permission error:<br /><br /><b>java.lang.SecurityException: Not allowed to bind to service Intent { act=aexp.intent.action.PICK_PLUGIN cat=[aexp.intent.category.UMO123] }<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.app.ContextImpl.bindService(ContextImpl.java:1098)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.content.ContextWrapper.bindService(ContextWrapper.java:370)<br />10-28 14:28:45.010: ERROR/plugin(18961): at si.pd.RouteMonitoringActivity.bindOpService(RouteMonitoringActivity.java:293)<br />10-28 14:28:45.010: ERROR/plugin(18961): at si.pd.RouteMonitoringActivity.access$40(RouteMonitoringActivity.java:283)<br />10-28 14:28:45.010: ERROR/plugin(18961): at si.pd.RouteMonitoringActivity$13.onClick(RouteMonitoringActivity.java:1526)<br />10-28 14:28:45.010: ERROR/plugin(18961): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:934)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.widget.AdapterView.performItemClick(AdapterView.java:282)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.widget.AbsListView.performItemClick(AbsListView.java:1144)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2639)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.widget.AbsListView$1.run(AbsListView.java:3432)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.os.Handler.handleCallback(Handler.java:587)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.os.Handler.dispatchMessage(Handler.java:92)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.os.Looper.loop(Looper.java:132)<br />10-28 14:28:45.010: ERROR/plugin(18961): at android.app.ActivityThread.main(ActivityThread.java:4028)<br />10-28 14:28:45.010: ERROR/plugin(18961): at java.lang.reflect.Method.invokeNative(Native Method)<br />10-28 14:28:45.010: ERROR/plugin(18961): at java.lang.reflect.Method.invoke(Method.java:491)<br />10-28 14:28:45.010: ERROR/plugin(18961): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)<br />10-28 14:28:45.010: ERROR/plugin(18961): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)<br />10-28 14:28:45.010: ERROR/plugin(18961): at dalvik.system.NativeStart.main(Native Method)<br /></b><br /><br />Thank you,<br />TonikNedlhttps://www.blogger.com/profile/10498362388891696783noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-49090919796873223932011-10-27T21:29:58.654+02:002011-10-27T21:29:58.654+02:00kNedl, what is the error that you are getting?kNedl, what is the error that you are getting?Gabor Pallerhttps://www.blogger.com/profile/14307475522972458932noreply@blogger.comtag:blogger.com,1999:blog-8214401912480503366.post-62468025295338114952011-10-27T14:06:45.241+02:002011-10-27T14:06:45.241+02:00Hi.
I tried to implement your example to my code,...Hi.<br /><br />I tried to implement your example to my code, but I'm getting errors. I just want to load some external functions.<br /><br />For example:<br />My plugin1 has function:<br />public String startMeasuring(){return "startFirst";}<br />My plugin2 function:<br />public String startMeasuring(){return "startFirst";}<br /><br />When I load my main application, the application has stored wich plugin first to use and then runs plugins function startMeasuring().<br /><br />Do I have to wait some time to run the function?<br /><br />Thank you.kNedlhttps://www.blogger.com/profile/10498362388891696783noreply@blogger.com