Re: [android-developers] App is crashing and showing android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4298f298 is not valid; is your activity running?

2013-07-23 Thread Renuka Deshpande
Hi,


The error shows its getting context null. So its better to initialise it
before starting and async task and just how it on pre-execute . you can try
in this way it works for me.


Thanks & Regards,
Renuka


On Tue, Jul 23, 2013 at 10:19 AM, Seshu  wrote:

> Hi All,
>In my application am using webservices, the user is sign in the login
> page using facebook so user ll giving his/her credentails, after grant
> access page in facebook came back to main screen and then am calling the
> user request data i.e., firstname, lastname and email id. for this one i
> used async task with progress dialog showing. after completion of
> webservices downloading i am navigating to 2nd screen here 1st screen is
> going to finishing. now in 2nd screen i have logout option, when the user
> selected the logout option the facebook logout and application logout is
> calling. again i am calling first screen by startactivity method. now again
> user wants to login the app using facebook after grant access page, came
> back to first screen here calling webservice again i.e., calling async task
> with progress dialog. on preexecute method i wrote progress dialog. there
> app is crashing and showing this below log.
>
> FATAL EXCEPTION: main
> android.view.WindowManager$BadTokenException: Unable to add window --
> token android.os.BinderProxy@4298f298 is not valid; is your activity
> running?
> at android.view.ViewRootImpl.setView(ViewRootImpl.java:665)
> at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:328)
> at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:226)
> at
> android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:151)
> at android.view.Window$LocalWindowManager.addView(Window.java:547)
> at android.app.Dialog.show(Dialog.java:277)
> at android.app.ProgressDialog.show(ProgressDialog.java:116)
> at android.app.ProgressDialog.show(ProgressDialog.java:99)
> at android.app.ProgressDialog.show(ProgressDialog.java:94)
> at
> com.satyaseshu.MainActivity$UserData.onPreExecute(MainActivity.java:209)
> at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
> at android.os.AsyncTask.execute(AsyncTask.java:534)
> at com.satyaseshu.MainActivity.requestUserData(MainActivity.java:191)
> at
> com.satyaseshu.MainActivity$FbAPIsAuthListener.onAuthSucceed(MainActivity.java:146)
> at com.satyaseshu.SessionEvents.onLoginSuccess(SessionEvents.java:76)
> at
> com.satyaseshu.LoginButton$LoginDialogListener.onComplete(LoginButton.java:81)
> at com.satyaseshu.Facebook$1.onComplete(Facebook.java:310)
> at
> com.satyaseshu.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:131)
> at
> android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:274)
> at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:376)
> at android.os.Handler.dispatchMessage(Handler.java:99)
> at android.os.Looper.loop(Looper.java:153)
> at android.app.ActivityThread.main(ActivityThread.java:5000)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
> at dalvik.system.NativeStart.main(Native Method)
>
> if any body knows then please let me know once. i am facing this issue.
> due to this i am unable to show any other popup dialogs and also toast
> message.
>
>
>
> Thanks for all,
> S.Seshu
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to android-developers+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Re: Improve data retriveing time from server.

2013-04-16 Thread Renuka Deshpande
You can do one thing when you parse your data show it simultaneously update
screen  we can do this...

Thanks & Regards,
Renuka


On Tue, Apr 16, 2013 at 3:31 PM, sree android
wrote:

> thank you friends.
>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to android-developers+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Access web service over SSL with client certificate (KSOAP)

2013-04-06 Thread Renuka Deshpande
try these

http://blog.callistaenterprise.se/2011/11/24/creating-self-signed-
certificates-for-u

se-on-android/

http://blog.callistaenterprise.se/2011/11/24/android
-tlsssl-mutual-authentication/

Thanks & Regards,
Renuka


On Sat, Apr 6, 2013 at 5:48 PM, mbarbiero  wrote:

> Dear developers...
>
> I need to access a very secure web service that requires authentication
> with server *AND client certificates*. The big problem (to me) is *how to
> define client certificate in the SSL packet*.
> I use o Ksoap but don't found documentation about SSL and certificates.
>
> Any idea?
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to android-developers+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [android-developers] Re: NullPointerException ... arrrggghhh ... newbie LOST!

2012-08-27 Thread Renuka Deshpande
cross check with your xml, that you have used same names as in xml.

On Mon, Aug 27, 2012 at 2:32 PM, Jason Sesso  wrote:

> does "R.id.**btnRetrieveDoc" event exist?
>
>
> On Saturday, August 25, 2012 12:45:20 PM UTC-7, KinnMirr wrote:
>>
>> When I run below activity, I get an exception. I've wrapped the exception
>> in an AlertDialog. Here's what the dialog shows.
>> *  null
>>   null
>>   null
>>   java.lang.NullPointerException
>> *
>> Where do I even START looking for a problem?
>> I've commented-out everything I can think of and the exception still
>> happens.
>> ar!
>> I'm a newbie and I'm stumped!
>> Here's the Activity
>> AlertDialog marked with "">>"
>>
>> import android.os.Bundle;
>> import android.app.Activity;
>> import android.app.AlertDialog;
>> import android.content.Intent;
>> import android.view.Menu;
>> import android.view.View;
>> import android.view.View.**OnClickListener;
>> import android.widget.Button;
>> public class EncDocRetrieve extends Activity {
>>   Button retrieveDoc;
>>   //EditText DocName;
>>   @Override
>>   public void onCreate(Bundle savedInstanceState) {
>> super.onCreate(**savedInstanceState);
>> try {
>>   setContentView(R.layout.**activity_enc_doc_retrieve);
>>   retrieveDoc = (Button) findViewById(R.id.**
>> btnRetrieveDoc);
>>   retrieveDoc.**setOnClickListener(new OnClickListener()
>> {
>> @Override
>> public void onClick(View v) {
>>   //DocName = (EditText) findViewById(R.id.**
>> edtextDocUserName);
>>   Intent intent = new
>> Intent(EncDocRetrieve.this,
>>   **DecryptKeyGet.class);
>>   
>> //intent.putExtra(android.**content.Intent.EXTRA_TEXT,
>> DocName
>>   //.getText().toString());
>>   startActivity(intent);
>> }
>>   });
>> >>  } catch (Exception e) {
>> >>AlertDialog.Builder dialog = new
>> AlertDialog.Builder(this);
>> >>dialog.setTitle("Opps Exception");
>> >>String err = e.getLocalizedMessage() + "\n" +
>> e.getCause() + "\n"  + e.getMessage() + "\n" + e.toString();
>> >>dialog.setMessage(err);
>> >>dialog.setNeutralButton("Cool"**, null);
>> >>dialog.create().show();
>> }
>>   }
>>   @Override
>>   public boolean onCreateOptionsMenu(Menu menu) {
>> getMenuInflater().inflate(R.**menu.activity_enc_doc_**retrieve,
>> menu);
>> return true;
>>   }
>> }
>>
>  --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Thanks & Regards,
Renuka

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Re: [android-developers] Android Activity And closing application

2012-08-27 Thread Renuka Deshpande
Hello,

Let OS kill the application. see these
http://stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-upon

http://stackoverflow.com/questions/5100728/how-to-force-stop-my-android-application-programatically

http://stackoverflow.com/questions/6330200/how-to-quit-android-application-programmatically


When you press back the current activity is automatically finish and
removed from stack, so when you start same activity only one instance will
be there. You dont need to finish activity programmatically yourself when
you press back, Os does that.


On Mon, Aug 27, 2012 at 3:44 PM, Haris  wrote:

>
>
> Hai all
>
>   For my application I am using more than one layout, and I nedd to switch
> from layout to layout  
> I think there are two methods for this.
>
> 1. Using setContentView switch to new layout.
> 2. Or by creating new activity switch to new layout.
>
> Now I am following the second one...And its working perfectly...
>
> So which one I should use for my application...?
>
> And also for go back to the previous layout I am just pressing the back
> button.Do I need to call the finish() methodOr the android do it
> automatically..
>
> And I noticed that when close the application by calling finish() the
> program is exiting. But In Application->mange application it showing an
> option for "force stop"..
>
> Is there any method to  exit  application properly ?.
>
> Thanks..
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en




-- 
Thanks & Regards,
Renuka

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Re: [android-developers] alignment of imagebuttons in the image background

2010-11-02 Thread Renuka Deshpande
set gravity of image button as center_horizontal and center_vertical

On Tue, Nov 2, 2010 at 12:19 PM, Alok Upadhyay wrote:

> Hii,
> I have three image buttons which i want to aligne center vertically.i
> have layout something like this:
>
> 
> http://schemas.android.com/apk/res/
> android"
>android:orientation="vertical"
>android:layout_width="fill_parent"
>android:layout_height="fill_parent"
>android:background="@drawable/homepage_image"
>android:gravity="center_horizontal"
>>
>
>   android:id="@+id/btnSequence"
>  android:layout_width="wrap_content"
>  android:layout_height="wrap_content"
>  android:src="@drawable/btn_sequence"
>  android:scaleType="center"
>  />
>
>android:id="@+id/btnVideo"
>  android:layout_width="wrap_content"
>  android:layout_height="wrap_content"
>  android:src="@drawable/btn_video"
>  android:scaleType="center"
>  />
>
>android:id="@+id/btnInfo"
>  android:layout_width="wrap_content"
>  android:layout_height="wrap_content"
>  android:src="@drawable/btn_info"
>  android:scaleType="center"
>  />
> 
>
> although i have tried frame and relative but then image are
> overlapping each other.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en




-- 
Thanks & Regards,
Renuka

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Application restarts on orientation change

2010-11-02 Thread Renuka Deshpande
HI All,

When I change orientation application restarts and I lost my current data..
I am using activity group which contain lots of activities when i change
orientation application restarts from main activity.

is it possible to avoid this application restart on orientation change?

Anybody knows please let me know..

Thanks

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: custom cursor adapter

2010-07-13 Thread Renuka Deshpande
I got the solution. I was happening because cursor adapter should has _id
column in table it is using.

if we use Database(SQLite) in Android Applications, it is better to add a
column named "_id" to all tables to use CursorAdapter.
Or you need to write sql state "select member_id as _id from member _table
where ." to get Cursor.

You can find this matter at Android Developer
Site<http://developer.android.com/intl/ja/reference/android/widget/CursorAdapter.html>
"Adapter that exposes data from a Cursor to a ListView widget. The Cursor
must include a column named "_id" or this class will not work."

On Tue, Jul 13, 2010 at 3:27 PM, Renuka Deshpande <
renukanil.deshpa...@gmail.com> wrote:

> Hello All,
>
> I am developing application in which I am using List view and for that list
> I am using a cursor adapter.
> I have an sqlite file in assets/databases which is used for reading data
> and create database.
> I created database. For cursor adapter I am getting cursor from this
> database.
>
> Here is my code
>
> import java.io.FileOutputStream;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
>
> import android.content.Context;
> import android.database.Cursor;
> import android.database.SQLException;
> import android.database.sqlite.SQLiteDatabase;
> import android.database.sqlite.SQLiteException;
> import android.database.sqlite.SQLiteOpenHelper;
> import android.util.Log;
>
> /**
>  * @author Renuka A.
>  *
>  */
> public class DataBaseHelper extends SQLiteOpenHelper{
>
> //The Android's default system path of your application database.
> private static String DB_PATH =
> "/data/data/com.praumtech.names4baby/databases/";
>
> private static String DB_NAME = "newdata";
> private static String DB_FILE_NAME = "newdata.sqlite";
> private SQLiteDatabase _database;
>
> public static int ALL_NAMES = 0;
> public static int FAVORITE_NAME = 1;
> private String FAVORITE_TABLE = "favmaster";
> private String NAME_MASTER_TABLE = "namemaster";
>
>
> private final Context _context;
>
> /**
>  * Constructor
>  * Takes and keeps a reference of the passed context in order to access
> to the application assets and resources.
>  * @param context
>  */
> public DataBaseHelper(Context context) {
>
> super(context, DB_NAME, null, 1);
> _context = context;
> }
>
> /**
>  * Creates a empty database on the system and rewrites it with your own
> database.
>  * */
> public void createDataBase() throws IOException{
> boolean dbExist = checkDataBase();
> Log.d("Exception", " checkDataBase  "+dbExist);
> if(dbExist){
> //do nothing - database already exist
> try {
> String myPath = DB_PATH + DB_NAME;
> _database = SQLiteDatabase.openDatabase(myPath, null,
> SQLiteDatabase.OPEN_READWRITE);
> Log.d("Exception", " create database to open databse ");
> } catch (Exception e) {
> e.printStackTrace();
> }
> }else{
>
> //By calling this method and empty database will be created
> into the default system path
> //of your application so we are gonna be able to overwrite that
> database with our database.
> this.getReadableDatabase();
> Log.d("Exception", " in copy database of cretae ");
> try {
> _context.openOrCreateDatabase(DB_NAME, 0, null);
> copyDataBase();
> } catch (IOException e) {
> throw new Error("Error copying database");
> }
> }
> }
>
> /**
>  * Check if the database already exist to avoid re-copying the file
> each time you open the application.
>  * @return true if it exists, false if it doesn't
>  */
> private boolean checkDataBase(){
> SQLiteDatabase checkDB = null;
> try{
>
> String myPath = DB_PATH + DB_NAME;
> checkDB = SQLiteDatabase.openDatabase(myPath, null,
> SQLiteDatabase.OPEN_READONLY);
> //checkDB = _context.openOrCreateDatabase(DB_NAME, null,
> SQLiteDatabase.OPEN_READWRITE);
> }catch(SQLiteException e){
> //database does't exist yet.
> }
> if(checkDB != null){
> checkDB.close();
> }
> return checkDB != null ? true : false;
> }

[android-developers] custom cursor adapter

2010-07-13 Thread Renuka Deshpande
Hello All,

I am developing application in which I am using List view and for that list
I am using a cursor adapter.
I have an sqlite file in assets/databases which is used for reading data and
create database.
I created database. For cursor adapter I am getting cursor from this
database.

Here is my code

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * @author Renuka A.
 *
 */
public class DataBaseHelper extends SQLiteOpenHelper{

//The Android's default system path of your application database.
private static String DB_PATH =
"/data/data/com.praumtech.names4baby/databases/";

private static String DB_NAME = "newdata";
private static String DB_FILE_NAME = "newdata.sqlite";
private SQLiteDatabase _database;

public static int ALL_NAMES = 0;
public static int FAVORITE_NAME = 1;
private String FAVORITE_TABLE = "favmaster";
private String NAME_MASTER_TABLE = "namemaster";


private final Context _context;

/**
 * Constructor
 * Takes and keeps a reference of the passed context in order to access
to the application assets and resources.
 * @param context
 */
public DataBaseHelper(Context context) {

super(context, DB_NAME, null, 1);
_context = context;
}

/**
 * Creates a empty database on the system and rewrites it with your own
database.
 * */
public void createDataBase() throws IOException{
boolean dbExist = checkDataBase();
Log.d("Exception", " checkDataBase  "+dbExist);
if(dbExist){
//do nothing - database already exist
try {
String myPath = DB_PATH + DB_NAME;
_database = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
Log.d("Exception", " create database to open databse ");
} catch (Exception e) {
e.printStackTrace();
}
}else{

//By calling this method and empty database will be created into
the default system path
//of your application so we are gonna be able to overwrite that
database with our database.
this.getReadableDatabase();
Log.d("Exception", " in copy database of cretae ");
try {
_context.openOrCreateDatabase(DB_NAME, 0, null);
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}

/**
 * Check if the database already exist to avoid re-copying the file each
time you open the application.
 * @return true if it exists, false if it doesn't
 */
private boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{

String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
//checkDB = _context.openOrCreateDatabase(DB_NAME, null,
SQLiteDatabase.OPEN_READWRITE);
}catch(SQLiteException e){
//database does't exist yet.
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}

/**
 * Copies your database from your local assets-folder to the just
created empty database in the
 * system folder, from where it can be accessed and handled.
 * This is done by transfering bytestream.
 * */
private void copyDataBase() throws IOException{

try {
//Open your local db as the input stream
Log.d("Exception", " in copy database
"+_context.getAssets().list("databases").length);
String[] str = _context.getAssets().list("databases");
/*for(int i = 0 ; i < str.length; i++){
Log.d("Exception", " i "+i+"  "+str[i]);
 }*/
InputStream myInput =
_context.getAssets().open("databases/"+DB_FILE_NAME);

//Log.d("Exception", " in copy database
"+myInput.available());
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;

//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
//Log.d("Exception", " in copy database output file
"+myOutput.toString());
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
//Close the streams
myOutput.flush();

[android-developers] custom seek bar

2010-06-09 Thread Renuka Deshpande
Hello All,

I am new to android. I want to customize a seek bar like attached
image.white and brown portions are the images.
Can anybdy tell me how to do that?

-- 
Thanks & Regards,
Renuka

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en<>