If you haven't declared an <intent-filter> in your manifest, then the component will be private to that .apk. You can make it public with either android:exported="true" or defining an intent-filter.
HOWEVER.. PLEASE be super careful about doing this. Did you realize that you are in the process of creating a nice big security hole, where you let any application get the user's current location without needing permission? Why are you doing this? The location APIs let applications get the current location. Why are you republishing that information in your own service? And why does this need to be in a separate .apk? My first instinct is for you to just not do this. Please. If you really think you need to do it, you need to seriously think about what you are doing with security. You would be very much best off putting all of this stuff in one .apk so you don't leak information to others. If for some reason you really think you need to have this separate (and take the overhead of multiple processes and all that), then you need to step back and take serious consideration of security and applying permissions to enforce it, how your .apks are signed, install ordering issues with granting permissions, etc. 2010/2/13 dane131 <[email protected]> > anybody help? > > On 13 Φεβ, 00:44, dane131 <[email protected]> wrote: > > hallo i have aservicethat provides gps coordinates.Here is the > > code : > > > > package app.suite.gps; > > > > import android.app.Service; > > import android.content.Context; > > import android.content.Intent; > > import android.location.Location; > > import android.location.LocationListener; > > import android.location.LocationManager; > > import android.os.Bundle; > > import android.os.IBinder; > > import android.os.RemoteException; > > import app.suite.gps.IGps; > > > > public class Service_impl extendsServiceimplements LocationListener{ > > > > double lat=37.96568 ; > > double lng=23.71382; > > > > @Override > > public IBinder onBind(Intent arg0) { > > // TODO Auto-generated method stub > > LocationManager lm = > > (LocationManager)getSystemService(Context.LOCATION_SERVICE); > > lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, > 1000L, > > 500.0f, this); > > return mBinder; > > } > > > > private final IGps.Stub mBinder = new IGps.Stub() { > > > > @Override > > public double getLat() throws RemoteException { > > > > return lat; > > } > > > > @Override > > public double getLng() throws RemoteException { > > > > return lng; > > } > > }; > > > > public void onLocationChanged(Location location) { > > if (location != null) > > { > > lat = location.getLatitude(); ; > > lng = location.getLongitude(); > > } > > > > } > > > > @Override > > public void onProviderDisabled(String arg0) { > > // TODO Auto-generated method stub > > > > } > > > > @Override > > public void onProviderEnabled(String arg0) { > > // TODO Auto-generated method stub > > > > } > > > > @Override > > public void onStatusChanged(String arg0, int arg1, Bundle arg2) { > > // TODO Auto-generated method stub > > > > } > > > > } > > > > i want tobindto thisservicefrom another application which uses the > > following piece of code : > > > > package app.suite.client; > > > > import android.app.Activity; > > import android.content.ComponentName; > > import android.content.Intent; > > import android.content.ServiceConnection; > > import android.os.Bundle; > > import android.os.IBinder; > > import android.os.RemoteException; > > import android.util.Log; > > import android.view.View; > > import android.widget.Button; > > import android.widget.TextView; > > public class Client extends Activity > > { > > IGps mservice=null; > > > > ServiceConnection conn=new ServiceConnection() { > > > > @Override > > public void onServiceDisconnected(ComponentName name) { > > Log.e("TAG","DISCONNECTED"); > > > > } > > > > @Override > > public void onServiceConnected(ComponentName name, > IBinderservice) > > { > > > > mservice=IGps.Stub.asInterface(service); > > try > > { > > double a=mservice.getLat(); > > String a_str=Double.toString(a); > > Log.e("TAG",a_str); > > } > > catch(RemoteException e) > > { > > > > } > > > > } > > }; > > public void onCreate(Bundle icicle) > > { > > super.onCreate(icicle); > > setContentView(R.layout.main); > > > > Intentservice= new Intent(); > > service.setComponent(new > > ComponentName("app.suite.gps","app.suite.gps.Service_impl")); > > bindService(service, conn, BIND_AUTO_CREATE); > > > > } > > } > > > > When i run the code i get the security exception "unabletobindtoservice" > > > > (I have included the IGps.aidl file in both applications and generated > > the interfaces) > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

