Shan's Simple Thought , Android Mobile Application Development
This is mainly focused on the key to mobile application development using android technology. Here I am putting source code as posts that I created for my needs, and I want to share my knowledge to others who is facing any problem related with same topic.
Monday, June 21, 2021
How to improve build times in android
Few steps that can be taken to improve the build performance
Use Gradle enterprise caching to preserve build artifacts between runs
Split into library Modules
Breaking up appLibrary into their respective library modules
Integrate Pipe line
Development build pipeline - run for each PR
Release build pipeline - run for release cycle
Integrte Sonar
Profiling
Monday, December 24, 2018
Android application security best practices:
Provide security for android applications by applying security best practices and techniques.
The common security issues may arise from different ways:
Attack vector :
Technique that a hacker uses to gain access to another computing device or network in order to inject a “bad code” often called payloads. This vector helps hackers to exploit system vulnerabilities.
Provide security for android applications by applying security best practices and techniques.
The common security issues may arise from different ways:
Attack vector :
Technique that a hacker uses to gain access to another computing device or network in order to inject a “bad code” often called payloads. This vector helps hackers to exploit system vulnerabilities.
Identify application based permissions data protection:
Week Server side implementation:
Threat to data:
SQL Injection:
Cross Site Scripting (XSS):
Week Server side implementation:
Threat to data:
SQL Injection:
Cross Site Scripting (XSS):
Monday, May 31, 2010
How to scale an image to fix mobile screen
public static Image scaleImage(Image original, int newWidth, int newHeight) {
int[] rawInput = new int[original.getHeight() * original.getWidth()];
original.getRGB(rawInput, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
int[] rawOutput = new int[newWidth * newHeight];
// YD compensates for the x loop by subtracting the width back out
int YD = (original.getHeight() / newHeight) * original.getWidth() - original.getWidth();
int YR = original.getHeight() % newHeight;
int XD = original.getWidth() / newWidth;
int XR = original.getWidth() % newWidth;
int outOffset = 0;
int inOffset = 0;
for (int y = newHeight, YE = 0; y > 0; y--) {
for (int x = newWidth, XE = 0; x > 0; x--) {
rawOutput[outOffset++] = rawInput[inOffset];
inOffset += XD;
XE += XR;
if (XE >= newWidth) {
XE -= newWidth;
inOffset++;
}
}
inOffset += YD;
YE += YR;
if (YE >= newHeight) {
YE -= newHeight;
inOffset += original.getWidth();
}
}
return Image.createRGBImage(rawOutput, newWidth, newHeight, false);
}
int[] rawInput = new int[original.getHeight() * original.getWidth()];
original.getRGB(rawInput, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
int[] rawOutput = new int[newWidth * newHeight];
// YD compensates for the x loop by subtracting the width back out
int YD = (original.getHeight() / newHeight) * original.getWidth() - original.getWidth();
int YR = original.getHeight() % newHeight;
int XD = original.getWidth() / newWidth;
int XR = original.getWidth() % newWidth;
int outOffset = 0;
int inOffset = 0;
for (int y = newHeight, YE = 0; y > 0; y--) {
for (int x = newWidth, XE = 0; x > 0; x--) {
rawOutput[outOffset++] = rawInput[inOffset];
inOffset += XD;
XE += XR;
if (XE >= newWidth) {
XE -= newWidth;
inOffset++;
}
}
inOffset += YD;
YE += YR;
if (YE >= newHeight) {
YE -= newHeight;
inOffset += original.getWidth();
}
}
return Image.createRGBImage(rawOutput, newWidth, newHeight, false);
}
Sunday, March 28, 2010
contact number from phone book : using j2me
public static Vector retrieveContactInfo()
{
Vector vContactInfo = new Vector();
//Check that PIM Optional Package is available
String pimVersion = System.getProperty("microedition.pim.version");
if(pimVersion == null)
return null;
else
{
PIM pim = PIM.getInstance();
ContactList contactList = null;
try
{
contactList = (ContactList) pim.openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY);
if(contactList == null)
{
return null;
}
Enumeration clEnum = contactList.items();
while(clEnum.hasMoreElements())
{
Contact contact = (Contact) clEnum.nextElement();
String name = "";
try
{
//if(contactList.isSupportedField(Contact.FORMATTED_NAME))
{
name = contact.getString(Contact.FORMATTED_NAME, 0);
}
}
catch(Exception ex) //An unexpected error occurred while reading the contact name.
{
continue;
}
if(!contactList.isSupportedField(Contact.TEL))
{
continue;
}
int noOfPhones = contact.countValues(Contact.TEL);
Vector vTelInfo = new Vector();
for(int i = 0; i < contactattribute =" contact.getAttributes(Contact.TEL," number =" contact.getString(Contact.TEL," teltype = "" contactattribute ="="" teltype = "Home" contactattribute ="="" teltype = "Mobile" contactattribute ="="" teltype = "Work" contactattribute ="="" teltype = "Other" contactattribute ="="" teltype = "Pager" contactattribute ="="" teltype = "General"> 0)
{
vContactInfo.addElement(new ContactInfo(name, vTelInfo));
}
}
}
catch (PIMException ex)
{
return null;
}
catch (SecurityException ex)
{
return null;
}
return vContactInfo;
}
{
Vector vContactInfo = new Vector();
//Check that PIM Optional Package is available
String pimVersion = System.getProperty("microedition.pim.version");
if(pimVersion == null)
return null;
else
{
PIM pim = PIM.getInstance();
ContactList contactList = null;
try
{
contactList = (ContactList) pim.openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY);
if(contactList == null)
{
return null;
}
Enumeration clEnum = contactList.items();
while(clEnum.hasMoreElements())
{
Contact contact = (Contact) clEnum.nextElement();
String name = "";
try
{
//if(contactList.isSupportedField(Contact.FORMATTED_NAME))
{
name = contact.getString(Contact.FORMATTED_NAME, 0);
}
}
catch(Exception ex) //An unexpected error occurred while reading the contact name.
{
continue;
}
if(!contactList.isSupportedField(Contact.TEL))
{
continue;
}
int noOfPhones = contact.countValues(Contact.TEL);
Vector vTelInfo = new Vector();
for(int i = 0; i < contactattribute =" contact.getAttributes(Contact.TEL," number =" contact.getString(Contact.TEL," teltype = "" contactattribute ="="" teltype = "Home" contactattribute ="="" teltype = "Mobile" contactattribute ="="" teltype = "Work" contactattribute ="="" teltype = "Other" contactattribute ="="" teltype = "Pager" contactattribute ="="" teltype = "General"> 0)
{
vContactInfo.addElement(new ContactInfo(name, vTelInfo));
}
}
}
catch (PIMException ex)
{
return null;
}
catch (SecurityException ex)
{
return null;
}
return vContactInfo;
}
Thursday, March 4, 2010
String manipulation, split string with specified delimeter and store into vector
public class StringManip {
public static Vector split(String str, final String delim, boolean discardEndData) {
Vector vComponents = new Vector();
int index = 0;
while (index < str.length()) {
int newIndex = str.indexOf(delim, index);
if (newIndex > 0) {
vComponents.addElement(str.substring(index, newIndex));
} else {
if (discardEndData == false) {
vComponents.addElement(str.substring(index));
}
break;
}
index = newIndex + delim.length();
}
return vComponents;
}
example :-
Vector v = StringManip.split("aaa,aaaa,aaa,aa" , ",", false);
public static Vector split(String str, final String delim, boolean discardEndData) {
Vector vComponents = new Vector();
int index = 0;
while (index < str.length()) {
int newIndex = str.indexOf(delim, index);
if (newIndex > 0) {
vComponents.addElement(str.substring(index, newIndex));
} else {
if (discardEndData == false) {
vComponents.addElement(str.substring(index));
}
break;
}
index = newIndex + delim.length();
}
return vComponents;
}
example :-
Vector v = StringManip.split("aaa,aaaa,aaa,aa" , ",", false);
Thursday, February 25, 2010
J2me source code to find the screen size to work the application in different screen size
import com.sun.lwuit.Display;
/**
* This class enumerates the different phone resolution categories.
* Note that enums are not supported in source 1.3.
* @author Sirajuddin
*/
public abstract class PhoneDisplay {
public static int LOWRES = 0;
public static int MEDRES = 1;
public static int HIGHRES = 2;
public static int getCategory(Display display)
{
int width = display.getDisplayWidth();
int height = display.getDisplayHeight();
int diagonal = (int) Math.sqrt((width * width) + (height * height));
if(diagonal < 205)
return LOWRES;
return HIGHRES;
}
};
/**
* This class enumerates the different phone resolution categories.
* Note that enums are not supported in source 1.3.
* @author Sirajuddin
*/
public abstract class PhoneDisplay {
public static int LOWRES = 0;
public static int MEDRES = 1;
public static int HIGHRES = 2;
public static int getCategory(Display display)
{
int width = display.getDisplayWidth();
int height = display.getDisplayHeight();
int diagonal = (int) Math.sqrt((width * width) + (height * height));
if(diagonal < 205)
return LOWRES;
return HIGHRES;
}
};
Subscribe to:
Posts (Atom)