Categories
discuss

Invoking activity from APK in another android application

I have an android application that starts an activity and is running well. I need other developers to be able to integrate my APK into their applications in such a way that they can start the activity in my APK from their android applications.

What are the ways of achieving this?

Thanks George

Answer

The best thing to do, IMHO, is declare a custom action in an in your activity’s manifest. Something like:

<activity android:name="Foo">
  <intent-filter>
    <action android:name="com.commonsware.android.THIS_IS_MY_ACTION" />
  </intent-filter>
</activity>

Then, your compatriots can launch it via that custom action:

startActivity(new Intent("com.commonsware.android.THIS_IS_MY_ACTION"));

By namespacing your action, you should not run into accidental conflicts with anyone else’s app.

Categories
discuss

Rails: Internationalization of Javascript Strings?

So, we have an existing Rails 2.3.5 app that does not support Internationalization at all. Now, I’m well familiar with Rails I18n stuff, but we have a LOT of output strings inside /javascripts/. I’m not a huge fan of this approach, but unfortunately it is too late to fix it now.

How might we internationalize strings stored in JS files in a Rails app? Rails doesn’t even serve the JS files…

I’m thinking I could always have the Rails app serve up the JS files, but that seems pretty gross. Are there plugins to do this?

Answer

Why not something simple like:

<script type="text/javascript">
  window.I18n = <%= I18n.backend.send(:translations).to_json.html_safe %>
</script>

Then in JS you can do things like:

I18n["en-US"]["alpha"]["bravo"];

I’ve wrapped mine in an application helper.

def current_translations
  @translations ||= I18n.backend.send(:translations)
  @translations[I18n.locale].with_indifferent_access
end

Then my call in my application.html.erb looks like this:

<script type="text/javascript">
  window.I18n = <%= current_translations.to_json.html_safe %>
</script>

This allows you to avoid having to know the current locale in JavaScript.

I18n["alpha"]["bravo"];

Or

I18n.alpha.bravo;
Categories
discuss

Problem changing Java version using alternatives

I’m not quite sure how I got into this mess, but for some reason I’m not able to change the current version of Java using alternatives. I can run alternatives –config java and type my selection but when I echo the version number for either java or javac, it spits back out 1.5 every time (despite alternatives showing the current version is 1.6). The server I’m working with is running RHEL5, by the way.

I have verified that the paths used in alternatives are pointing to the correct directories. Here’s some output from my session:

[brilewis@myserver]$ sudo
/usr/sbin/update-alternatives –config
java

There are 3 programs which provide
‘java’.

Selection Command

** 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
+ 2 /usr/java/jdk1.5.0_10/bin/java
3 /usr/java/jdk1.6.0_16/bin/java

Enter to keep the current
selection[+], or type selection number: 3

[brilewis@myserver]$ java -version

java version “1.5.0_10” Java(TM) 2 Runtime
Environment, Standard Edition (build
1.5.0_10-b03) Java HotSpot(TM) Server VM (build 1.5.0_10-b03, mixed mode)

[brilewis@myserver]$ sudo /usr/sbin/update-alternatives –config java

There are 3 programs which provide ‘java’.

Selection Command

** 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
2 /usr/java/jdk1.5.0_10/bin/java
+ 3 /usr/java/jdk1.6.0_16/bin/java

Enter to keep the current selection[+], or type selection number:

UPDATE: The following is the output of echo $PATH:

/usr/java/jdk1.5.0_10/bin:/usr/local/apache-ant-1.7.1/bin:/usr/local/apache-tomcat-6.0.24:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/NX/bin:/home/brilewis/bin

UPDATE (4/26/10): I followed Bert’s suggestion and removed JAVA_HOME from the PATH environment var in /etc/profile. After doing this, I was able to use alternatives to change the version of Java. The only problem is that when I try to run javac, I get “-bash: javac: command not found”. This does not happen when the version is set to 1.5.

Answer

The only way I was able to solve the problem was to start over again by removing /var/lib/alternatives/java and installing each JDK again. I did the same for javac and jar. After doing this, I was able to switch between versions without any issues.

Categories
discuss

How to use Git on Android?

I have a desktop application using git for synchronization. I have also an android application which do the same as the desktop, but I don’t know how to do the synchronization part on it. I haven’t found any implementation of git on android. I found a jgit, but its unwell documented and I was not able to do even a commit with that.

I was thinking about remote commands to my git server from my android app, but this is really a tease for me.
Could you tell me if any other git implementation which can be used on android exists? If you have any idea how to solve that, please tell me.

Answer

Another option is using ASE. There seems to be a full-featured pure python implementation of git at https://github.com/jelmer/dulwich.

Categories
discuss

Does Java have “properties” that work the same way properties work in C#?

In C#, you can use properties to make a data field publicly accessible (allowing the user to directly access it), and yet retain the ability to perform data validation on those directly-accessed fields. Does Java have something similar? For Instance, suppose there exists a C# class with the following implementation(see below):

public class newInt{

    public newInt(){...}

    public int x{
        get{ return this.x }
        set{ this.x = isValid(value) }
    }
}

private static int isValid(int value){...}

This definition in the class allows the user to “naturally” use the data field ‘x’ when retrieving values from it and assigning values to it. Below is how it would be used in main.

public class Test{

    public static void main(String[] args){

        newInt a = new newInt();
        a.x = 50;

        int b = a.x;
    }
}

The question is… can java do this as well? if so, what is it called?

Answer

No.

That’s why Java has getters/setters.

In C# you typically have something like:

public class SomeObject
{
    private string _title = "";

    public string Title { get { return _title; } set { _title = value; } }
}

// Or with Auto-Properties
public class SomeObjectAutoProperties
{
    public string Title { get; set; }
}

The Java getter/setter equivalent would be:

public class SomeObject
{
    private String _title = "";

    public string getTitle() { return _title; }

    public void setTitle(String value) { _title = value; }
}
Source: stackoverflow
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Privacy Policy, and Copyright Policy. Content is available under CC BY-SA 3.0 unless otherwise noted. The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 © No Copyrights, All Questions are retrived from public domain..