The Android tutorial document provides information about developing Android applications. It discusses Android's history beginning with Google's acquisition of Android Inc. in 2005. It describes the Open Handset Alliance formed to support Android. It also covers setting up an Android development environment in Eclipse, building a simple "Hello World" Android project, and the basic project structure involving Java classes, resources, and the AndroidManifest file. The document provides guidance on layouts, activities, buttons, lists and other common Android development topics.
Android Presentation cover All version topics etc
my lifes first presentation with full information
history ,versions,features of android, statistics
graphs
University Of Central punjab
Android Presentation cover All version topics etc
my lifes first presentation with full information
history ,versions,features of android, statistics
graphs
University Of Central punjab
Pengembangan desa-desa pusat pertumbuhan dengan spesialisasi pada potensi mereka sendiri serta dukungan desa sekitar (hinterland) mampu memberikan multiplier effect lebih besar.
Maju desa maju Negara
Sejahtera desa sejahtera seluruh rakyat Indonesia
needed more information
Contact me on 085377385454 or email ardnov@yahoo.com
Best practice dalam PNPM Mandiri Perdesaan dengan konsep perencanaan pembangunan partisipatif secara utuh. Butuh bimbingan dengan orientasi pada mengarahkan dan bukan memaksakan apa yang birokrasi inginkan
needed more information
Contact me on 085377385454 or email ardnov@yahoo.com
Mobile OS controls smartphone, tablet, PDA, or other mobile device. Modern mobile operating systems combine the features of a personal computer operating system with touchscreen, cellular, Bluetooth, WiFi, GPS mobile navigation, camera, video camera, speech recognition, voice recorder, music player, Near field communication, personal digital assistant (PDA), and other features.
Introduction to Android development - Presentation ReportAtul Panjwani
A powerpoint presentation on Introduction to android development
prepared for college seminar
[ppt is also uploaded named "Introduction to Android development - Presentation"]
Source: developer.android.com
Evolution of Android Operating System and it’s Versionsijtsrd
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. It can be considered as a software platform as well as an operating system for mobile devices based on the Linux operating system and currently developed by Google. It is designed primarily for touch screens mobile devices such as smartphones and tablet computers. One of the most widely used mobile OS these days is android. It is free and open source software its source code is known as Android Open Source Project AOSP , which is primarily licensed under the Apache License. This Paper Contains android architecture consists of key applications, Application framework, Native libraries, Android runtime, DVM, Linux Kernal., Many versions of Android Operating System are KitKat, JellyBean, Honeycomb, Froyo etc… Advantages and Disadvantages of Android and also the conclusion. Aishwarya Gujar | Prof. Pratibha Adkar "Evolution of Android Operating System and it’s Versions" Published in International Journal of Trend in Scientific Research and Development (ijtsrd), ISSN: 2456-6470, Volume-5 | Issue-4 , June 2021, URL: https://www.ijtsrd.compapers/ijtsrd42519.pdf Paper URL: https://www.ijtsrd.comengineering/computer-engineering/42519/evolution-of-android-operating-system-and-it’s-versions/aishwarya-gujar
In a word document, write me a short document of Android development.pdffazalenterprises
In a word document, write me a short document of Android development history. Feel free to
talk about anything within that history. This is more about you as a developer understanding how
this came into being and why it has such a large market share now. Should end up being about
500 words. Not as bad as it sounds and you are free to use any sources of information you find,
as long as they are respectible sources. I dont need any fancy citation at the end of the document,
just include the link to any websites or articles you use.
Solution
Android package development is that the method by that new applications square measure
created for the humanoid software package. Applications square measure typically developed in
Java programming language exploitation the humanoid package development kit (SDK),
however different development environments also are offered.
The humanoid package development kit (SDK) includes a comprehensive set of development
tools. These embody a computer programme, libraries, a phone mortal supported QEMU,
documentation, sample code, and class. presently supported development platforms embody
computers running Linux (any fashionable desktop Linux distribution), mack OS X ten.5.8 or
later, and Windows seven or later. As of March 2015, the SDK isn\'t offered on humanoid itself,
however package development is feasible by exploitation specialized humanoid applications.
Until round the finish of 2014, the formally supported integrated development setting (IDE) was
Eclipse exploitation the humanoid Development Tools (ADT) Plugin, although IntelliJ plan IDE
(all editions) totally supports humanoid development out of the box, and NetBeans IDE
conjointly supports humanoid development via a plugin. As of 2015, humanoid Studio,] created
by Google and powered by IntelliJ, is that the official IDE; but, developers square measure
absolve to use others. in addition, developers could use any text editor to edit Java and XML
files, then use command tools Java Development Kit and Apache emmet square measure needed
to make, build and rectify humanoid applications in addition as management hooked up
humanoid devices e.g., triggering a resuscitate, putting in package package(s) remotely
Enhancements to humanoid\'s SDK go hand in hand with the Android platform development.
The SDK conjointly supports older versions of the humanoid platform just in case developers
want to focus on their applications at older devices. Development tools square measure
downloadable elements, therefore when one has downloaded the newest version and platform,
older platforms and tools can even be downloaded for compatibility testing.
Android applications square measure prepacked in .apk format and hold on underneath /data/app
folder on the humanoid OS the folder is accessible solely to the basis user for security reasons.
APK package contains .dex files compiled computer memory unit code files referred to as
Dalvik executables), resource files, etc.
At Google, the tea.
about different types of Android and its uses and working of the kinds of androids in mobile phones and tabs.
Android released date by whom and expired dates
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
2. Chapter 2: Getting to know Android
History
In July 2005, Google acquired Android, Inc., a small startup company based in Palo Alto, California, USA. Android's cofounders who went to work at Google included Andy Rubin (co-founder of Danger), Rich Miner (co-founder of Wildfire
Communications, Inc.), Nick Sears (once VP at T-Mobile), and Chris White (headed design and interface development at
WebTV). At the time, little was known about the functions of Android, Inc. other than that they made software for
mobile phones. This began rumors that Google was planning to enter the mobile phone market.
At Google, the team led by Rubin developed a mobile device platform powered by the Linux kernel which they
marketed to handset makers and carriers on the premise of providing a flexible, upgradeable system.[citation needed] It
was reported that Google had already lined up a series of hardware component and software partners and signaled to
carriers that it was open to various degrees of cooperation on their part. More speculation that Google would be
entering the mobile-phone market came in December 2006. Reports from the BBC and The Wall Street Journal noted
that Google wanted its search and applications on mobile phones and it was working hard to deliver that. Print and
online media outlets soon reported rumors that Google was developing a Google-branded handset. More speculation
followed reporting that as Google was defining technical specifications, it was showing prototypes to cell phone
manufacturers and network operators.
Ultimately Google unveiled its smartphone Nexus One that uses the Android open source mobile operating system.
The device is manufactured by Taiwan's HTC Corporation, and became available on January 5, 2010.
source: wikipedia
http://android.voxisland.com - (c) VoxIsland 2010
2
3. Chapter 2: Getting to know Android
The Open Handset Alliance
Mobile
Operators
Software
Companies
Commercialization
Companies
Semiconductors
Companies
Handset
Manufacturers
China Mobile
KDDI Corporation
NTT DoCoMo
Sprint Nextel
T-Mobile
Telecom Italia
Telefonica
Ascender Corporation
eBay
Esmertec
Google
LivingImage
Myriad Group|Myriad
NMS Communications
Nuance
Communications
PacketVideo
SkyPop
SONiVOX
Aplix
Noser Engineering
The Astonishing Tribe
Wind River Systems
Audience
Broadcom Corporation
Intel Corporation
Marvell Technology
Group
Nvidia Corporation
Qualcomm
SiRF|SiRF Technology
Holdings
Synaptics
Texas Instruments
High Tech Computer
Corporation|HTC
LG
Motorola
Samsung Electronics
Vodafone
Softbank
China Unicom
SVox
Borqs
Omron SW
Teleca
Sasken Comm Tech Ltd
ASUSTek
Garmin
Huawei Tech
Sony Ericsson
Toshiba
Acer
Borqs
Omron SW
Teleca
Sasken Comm Tech Ltd
founding members in bold
as of 03-2010
http://android.voxisland.com - (c) VoxIsland 2010
3
4. Chapter 2: Getting to know Android
Android application development VS traductionnal development
Power
no need to address
limiting power
consumption is
crucial
big display
small display
CPU
Ghz
hunders of
Mhz
Memory
Gb
Mb
Storage
Tb or Gb
Gb or Mb
LIMITATIONS
2. Re-Usability of components (mashups)
will speed-up developments
3. Interchangeable apps
will speed-up developments
Computer
Screen
1. Limited resources
will slow-down developments
Android
phone
http://android.voxisland.com - (c) VoxIsland 2010
4
6. Chapter 3: Android development setup
Adding the Android SDK tools to your system's PATH:
MAC OS
go in your home directory
edit (or create) .bash_profile
add the complete path to tools in the PATH variable (coma separated)
example: export PATH=${PATH}:/Developer/android-sdk-mac_86/tools/
GNU/LINUX
go in your home directory
edit .bash_profile or .bash_rc
add the complete path to tools in the PATH variable (coma separated)
example: export PATH=${PATH}:/Developer/android-sdk-mac_86/tools/
WINDOWS
Explorer - right click on My Computer - click on Properties - click on Advanced tab - click on Environment
variable - double click on PATH - adding the path to tools in the variable
http://android.voxisland.com - (c) VoxIsland 2010
6
7. Chapter 4: Android development with Eclipse
BabySteps project:
package com.voxisland;
import android.app.Activity;
import android.os.Bundle;
public class BabySteps extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
http://android.voxisland.com - (c) VoxIsland 2010
7
8. Chapter 4: Android development with Eclipse
JAVA perspective:
http://android.voxisland.com - (c) VoxIsland 2010
8
9. Chapter 4: Android development with Eclipse
DDMS perspective:
http://android.voxisland.com - (c) VoxIsland 2010
9
10. Chapter 4: Android development with Eclipse
DEBUG perspective:
http://android.voxisland.com - (c) VoxIsland 2010
10
11. Chapter 5: Hello Android project structure
R.java class:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.voxisland;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
http://android.voxisland.com - (c) VoxIsland 2010
11
21. Chapter 9: Lists
SimpleList class (2/2):
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OnItemLongClickListener itemDelListener = new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View arg1,
int position, long arg3) {
itemSelected=parent.getItemAtPosition(position).toString();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Do you really want to delete "+itemSelected+"?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
adapter.remove(itemSelected);
adapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
return false;
}
};
ArrayList<String> myList = new ArrayList<String>(Arrays.asList(firstNames));
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList);
setListAdapter(adapter);
getListView().setOnItemLongClickListener(itemDelListener);
}
}
http://android.voxisland.com - (c) VoxIsland 2010
21
22. Chapter 10: Lists
ArrayAdapter:
A ListAdapter that manages a ListView backed by
an array of arbitrary objects. By default this class
expects that the provided resource id references a
single TextView. If you want to use a more complex
layout, use the constructors that also takes a field
id. That field id should reference a TextView in the
larger layout resource. However the TextView is
referenced, it will be filled with the toString() of
each object in the array. You can add lists or arrays
of custom objects. Override the toString() method
of your objects to determine what text will be
displayed for the item in the list. To use something
other than TextViews for the array display, for
instance, ImageViews, or to have some of data
besides toString() results fill the views, override
getView(int, View, ViewGroup) to return the type of
view you want.
Public Methods
void
add(T object)
Adds the specified object at the end of the array.
void
clear()
Remove all elements from the list.
Context
getContext()
Returns the context associated with this array adapter.
int
getCount()
View
T
getDropDownView(int position, View convertView, ViewGroup parent)
Get a View that displays in the drop down popup the data at the specified position in the data set.
getFilter()
Returns a filter that can be used to constrain data with a filtering pattern.
getItem(int position)
long
getItemId(int position)
int
getPosition(T item)
Returns the position of the specified item in the array.
getView(int position, View convertView, ViewGroup parent)
Filter
View
void
void
void
void
void
void
insert(T object, int index)
Inserts the specified object at the specified index in the array.
notifyDataSetChanged()
Notifies the attached View that the underlying data has been changed and it should refresh itself.
remove(T object)
Removes the specified object from the array.
setDropDownViewResource(int resource)
Sets the layout resource to create the drop down views.
setNotifyOnChange(boolean notifyOnChange)
Control whether methods that change the list (add(T), insert(T, int), remove(T), clear())
automatically call notifyDataSetChanged().
sort(Comparator<? super T> comparator)
Sorts the content of this adapter using the specified comparator.
http://android.voxisland.com - (c) VoxIsland 2010
22
23. Chapter 10: Long clicks
Definition:
The long click/touching is a gesture used on Android mobile devices. Long click/touching is touching an item and
pressing for a few seconds. Long clicks/touches on applications allows you to move them to the desktop, and long
touches on the desktop clock allow you to remove it.
getListView().setOnItemLongClickListener(itemDelListener);
http://android.voxisland.com - (c) VoxIsland 2010
23
24. Chapter 11: Dialog boxes
Adding a dialog box to the list example:
@Override
public boolean onItemLongClick(AdapterView<?> parent, View arg1, int position, long arg3) {
itemSelected=parent.getItemAtPosition(position).toString();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Do you really want to delete "+itemSelected+"?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
adapter.remove(itemSelected);
adapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
}
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
return false;
http://android.voxisland.com - (c) VoxIsland 2010
24
25. Chapter 11: Dialog boxes
Adding a dialog box to the list example:
@Override
public boolean onItemLongClick(AdapterView<?> parent, View arg1, int position, long arg3) {
itemSelected=parent.getItemAtPosition(position).toString();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Do you really want to delete "+itemSelected+"?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
adapter.remove(itemSelected);
adapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
}
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
return false;
http://android.voxisland.com - (c) VoxIsland 2010
25
26. AlertDialog builder 1/3:
Chapter 11: Dialog boxes
Public Methods
AlertDialog create()
Creates a AlertDialog with the arguments supplied to this builder.
AlertDialog.Builder setAdapter(ListAdapter adapter, DialogInterface.OnClickListener listener)
Set a list of items, which are supplied by the given ListAdapter, to be displayed
in the dialog as the content, you will be notified of the selected item via the supplied
listener.
AlertDialog.Builder setCancelable(boolean cancelable)
Sets whether the dialog is cancelable or not default is true.
AlertDialog.Builder setCursor(Cursor cursor, DialogInterface.OnClickListener listener, String
labelColumn)
Set a list of items, which are supplied by the given Cursor, to be displayed in the
dialog as the content, you will be notified of the selected item via the supplied
listener.
AlertDialog.Builder setCustomTitle(View customTitleView)
Set the title using the custom view customTitleView.
AlertDialog.Builder setIcon(Drawable icon)
Set the Drawable to be used in the title.
AlertDialog.Builder setIcon(int iconId)
Set the resource id of the Drawable to be used in the title.
AlertDialog.Builder setInverseBackgroundForced(boolean useInverseBackground)
Sets the Dialog to use the inverse background, regardless of what the contents is.
AlertDialog.Builder setItems(int itemsId, DialogInterface.OnClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setItems(CharSequence[] items, DialogInterface.OnClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setMessage(int messageId)
Set the message to display using the given resource id.
http://android.voxisland.com - (c) VoxIsland 2010
26
27. AlertDialog builder 2/3:
Chapter 11: Dialog boxes
AlertDialog.Builder setMessage(CharSequence message)
Set the message to display.
AlertDialog.Builder setMultiChoiceItems(Cursor cursor, String isCheckedColumn, String labelColumn,
DialogInterface.OnMultiChoiceClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setMultiChoiceItems(int itemsId, boolean[] checkedItems,
DialogInterface.OnMultiChoiceClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems,
DialogInterface.OnMultiChoiceClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the negative button of the dialog is pressed.
AlertDialog.Builder setNegativeButton(int textId, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the negative button of the dialog is pressed.
AlertDialog.Builder setNeutralButton(int textId, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the neutral button of the dialog is pressed.
AlertDialog.Builder setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the neutral button of the dialog is pressed.
AlertDialog.Builder setOnCancelListener(DialogInterface.OnCancelListener onCancelListener)
Sets the callback that will be called if the dialog is canceled.
AlertDialog.Builder setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener)
Sets a listener to be invoked when an item in the list is selected.
AlertDialog.Builder setOnKeyListener(DialogInterface.OnKeyListener onKeyListener)
Sets the callback that will be called if a key is dispatched to the dialog.
http://android.voxisland.com - (c) VoxIsland 2010
27
28. AlertDialog builder 3/3:
Chapter 11: Dialog boxes
AlertDialog.Builder setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the positive button of the dialog is pressed.
AlertDialog.Builder setPositiveButton(int textId, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the positive button of the dialog is pressed.
AlertDialog.Builder setSingleChoiceItems(int itemsId, int checkedItem, DialogInterface.OnClickListener
listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setSingleChoiceItems(CharSequence[] items, int checkedItem,
DialogInterface.OnClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setSingleChoiceItems(ListAdapter adapter, int checkedItem,
DialogInterface.OnClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setSingleChoiceItems(Cursor cursor, int checkedItem, String labelColumn,
DialogInterface.OnClickListener listener)
Set a list of items to be displayed in the dialog as the content, you will be notified of
the selected item via the supplied listener.
AlertDialog.Builder setTitle(int titleId)
Set the title using the given resource id.
AlertDialog.Builder setTitle(CharSequence title)
Set the title displayed in the Dialog.
AlertDialog.Builder setView(View view)
Set a custom view to be the contents of the Dialog.
AlertDialog show()
Creates a AlertDialog with the arguments supplied to this builder and show()'s
the dialog.
http://android.voxisland.com - (c) VoxIsland 2010
28
29. Intents1 class 1/2:
Chapter 12: Intents 1
package com.voxisland;
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.widget.Button;
public class Intents1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button myGalleryButton = (Button)findViewById(R.id.myGalleryButton);
Button myCallLogButton = (Button)findViewById(R.id.myCallLogButton);
Button myContactBookButton = (Button)findViewById(R.id.myContactBookButton);
myGalleryButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent();
myIntent.setAction(Intent.ACTION_VIEW);
myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivity(myIntent);
}
});
http://android.voxisland.com - (c) VoxIsland 2010
29
40. Chapter 15: Localization
1. Design your application
2. Choose your localization strategy: which countries, which languages?
3. Use no hard-coded strings or string constants; use R.string and strings.xml files.
4. Use no hard-coded drawables or layouts; use R.drawable and R.layout
5. Translate your strings files; localize your drawables.
6. Place your localized resources in the appropriate directories under 'res/'.
7. Create your final build or builds, using 'aapt' as necessary.
8. Upload your .apk file or files to Market, selecting the appropriate languages as you upload.
http://android.voxisland.com - (c) VoxIsland 2010
40
41. Chapter 16: Databases
package com.voxisland;
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.content.ContentValues;
android.content.Context;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
android.widget.Toast;
public class MyDatabaseDemo extends Activity {
private static final String DATABASE_NAME = "JADB.db";
private static final String DATABASE_TABLE = "myTable";
private static final String DATABASE_CREATE = "create table "+DATABASE_TABLE+" (_id integer
primary key autoincrement, col1 text not null);";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button
Button
Button
Button
butCreate
butAdd
butCount
butShow
=
=
=
=
(Button)findViewById(R.id.myButCreate);
(Button)findViewById(R.id.myButAdd);
(Button)findViewById(R.id.myButCount);
(Button)findViewById(R.id.myButShow);
// MORE HERE
}
}
http://android.voxisland.com - (c) VoxIsland 2010
41
45. Chapter 16: Databases
butShow.setOnClickListener(new OnClickListener() {
}
@Override
public void onClick(View v) {
SQLiteDatabase myDB;
myDB = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
String[] resultColumns = new String[] {"_id", "col1"};
Cursor allRows = myDB.query(DATABASE_TABLE, resultColumns, null, null, null, null, null, null);
String res = "RESULT IS:";
Integer cindex = allRows.getColumnIndex("col1");
if (allRows.moveToFirst()) {
do {
res += allRows.getString(cindex)+"-";
} while (allRows.moveToNext());
}
myDB.close();
Toast.makeText(getApplicationContext(), res, Toast.LENGTH_SHORT).show();
http://android.voxisland.com - (c) VoxIsland 2010
45
46. Chapter 16: Databases
SQLite survival commands:
.backup ?DB? FILE
.bail ON|OFF
.databases
.dump ?TABLE? ...
.echo ON|OFF
.exit
.explain ON|OFF
.genfkey ?OPTIONS?
.header(s) ON|OFF
.help
.import FILE TABLE
.indices TABLE
.iotrace FILE
.load FILE ?ENTRY?
.mode MODE ?TABLE?
Backup DB (default "main") to FILE
Stop after hitting an error. Default OFF
List names and files of attached databases
Dump the database in an SQL text format
Turn command echo on or off
Exit this program
Turn output mode suitable for EXPLAIN on or off.
Options are:
--no-drop: Do not drop old fkey triggers.
--ignore-errors: Ignore tables with fkey errors
--exec: Execute generated SQL immediately
See file tool/genfkey.README in the source
distribution for further information.
Turn display of headers on or off
Show this message
Import data from FILE into TABLE
Show names of all indices on TABLE
Enable I/O diagnostic logging to FILE
Load an extension library
Set output mode where MODE is one of:
csv
Comma-separated values
column
Left-aligned columns. (See .width)
html
HTML <table> code
insert
SQL insert statements for TABLE
line
One value per line
list
Values delimited by .separator string
tabs
Tab-separated values
tcl
TCL list elements
.nullvalue STRING
.output FILENAME
.output stdout
.prompt MAIN CONTINUE
.quit
.read FILENAME
.restore ?DB? FILE
.schema ?TABLE?
.separator STRING
.show
.tables ?PATTERN?
.timeout MS
.timer ON|OFF
.width NUM NUM ...
sqlite>
Print STRING in place of NULL values
Send output to FILENAME
Send output to the screen
Replace the standard prompts
Exit this program
Execute SQL in FILENAME
Restore content of DB (default "main") from FILE
Show the CREATE statements
Change separator used by output mode and .import
Show the current values for various settings
List names of tables matching a LIKE pattern
Try opening locked tables for MS milliseconds
Turn the CPU timer measurement on or off
Set column widths for "column" mode
http://android.voxisland.com - (c) VoxIsland 2010
46
47. Chapter 16: Databases
SQLite command line examples:
Adding a Column to a Table
Open/Create a Database
alter table {table name} ADD '{column name}' {data type};
This is done using the command line program.
Ex:
sqlite3 {database file name}
alter table my_things ADD 'description' varchar(50);
Ex:
Deleting a table
sqlite3 my_stuff_database.db
drop table {table name};
If the database exists it will be opened, if it doesn’t exist, it will be created.
Ex:
Print the database structure
drop table my_things;
.schema
Inserting Data into a Table
Print database structure and data
insert into {table name} values ({data}, {more data}, '{yet
more data}');
.dump
Ex:
Turn on column names on query results
.explain on
insert into my_things values (1, 'My first thing', 'It is
nice');
To turn it off do:
Transactions
.explain off
begin transaction;
Creating Tables
something
create table {table name} ('{column name}'
primary key, '{column name}' {data type});
{data
type}
commit;
Output query results to a file
Ex:
CREATE TABLE my_data('id' int primary key, 'name' varchar
(20), 'description' varchar(10));
.output {filename.txt}
http://android.voxisland.com - (c) VoxIsland 2010
47
48. Chapter 17: More on layouts
Most common layouts:
LinearLayout: when the order of arrangements of widgets/views of the layout needs to be horizontal or vertical manner, the
LinearLayout widget comes in handy. The direction of arrangement can be set to horizontal or vertical, default being horizontal.
TableLayout : as the name suggests, this layout object is used when the layout has widgets/views that need to be arranged into
rows and columns. This is similar to html tables. The cells can span columns. The TableLayout do not display its border. The
columns can be made to shrink and stretch by setting the respective properties. TableRow is another helper widget which should
be used in conjunction with the TableLayout.
RelativeLayout : when the position of each of the widgets/view is in relative/dependent to each other, then a relative layout is used.
That is for example, when a layout is needed such that it has a text view just to the left of an Edit Textbox, and a button just below
the EditText. The relation between the views are taken care in one iteration, hence if view B’s position is dependent on view A’s
position, view A must come first in the layout.
FrameLayout : this is a very simply layout which is used to hold a section of the screen blank, for displaying an item or group of
items at run time. All the elements added in the framelayout will be added to the top left of the screen.
AbsoluteLayout : when there is a need is to specify exact x and y co-ordinate position of the view, then AbsoluteLayout need to be
used. This layout should not be used as far as possible as it is difficult to maintain.
ListView: used to display list of items in a vertically scrolling list. ListView has many optimizations that are important for large lists.
ScrollView is used for vertically scrolling in which an infinite amount of space is given to the container to hold all the elements of the
view. A ScrollView should have one child which has the elements to be scrolled. A ScrollView cannot be used in conjunction with a
ListView since the list views optimizations will be nullified in effect.
http://android.voxisland.com - (c) VoxIsland 2010
48
59. Chapter 18: Services and background processing
See the services (only Android 2.0 and +):
Android 2.0 introduced a new "Running Services" activity available from the Application system settings. When brought up, it looks something like the left picture.
The main content is a list of all running services that may be of interest to the user, organized by the processes they run in. In the example here, we see three services:
•
GTalkService is part of the standard Google application suit; it is running in Google's "gapps" process, which currently consumes 6.8MB. It has been started for 3
hours 55 minutes, which on this device is the time from when it was first booted.
•
ActivityService is part of the Phonebook app, and its process consumes 4MB. This also has been running since boot.
•
SoftKeyboard is a third party input method. It has been running since I switched to it, about 4 minutes ago.
The user can tap on any of these services to control it; for normal services that are running because they were explicitly started, this will present a dialog allowing the
user to explicitly stop it (right picture).
http://android.voxisland.com - (c) VoxIsland 2010
59
62. permissions 1/2
Chapter 19: Security and permissions
ACCESS_CHECKIN_PROPERTIES
Allows read/write access to the "properties" table in the checkin
database, to change values that get uploaded.
ACCESS_COARSE_LOCATION
Allows an application to access coarse (e.g., Cell-ID, WiFi)
location
ACCESS_FINE_LOCATION
Allows an application to access fine (e.g., GPS) location
ACCESS_LOCATION_EXTRA_COMMANDS
Allows an application to access extra location provider commands
ACCESS_MOCK_LOCATION
Allows an application to create mock location providers for testing
ACCESS_NETWORK_STATE
Allows applications to access information about networks
ACCESS_SURFACE_FLINGER
Allows an application to use SurfaceFlinger's low level features
ACCESS_WIFI_STATE
Allows applications to access information about Wi-Fi networks
ACCOUNT_MANAGER
Allows applications to call into AccountAuthenticators.
AUTHENTICATE_ACCOUNTS
Allows an application to act as an AccountAuthenticator for the
AccountManager
BATTERY_STATS
Allows an application to collect battery statistics
BIND_APPWIDGET
Allows an application to tell the AppWidget service which
application can access AppWidget's data.
BIND_INPUT_METHOD
Must be required by input method services, to ensure that only the
system can bind to them.
BLUETOOTH
Allows applications to connect to paired bluetooth devices
BLUETOOTH_ADMIN
Allows applications to discover and pair bluetooth devices
BRICK
Required to be able to disable the device (very dangerous!).
BROADCAST_PACKAGE_REMOVED
Allows an application to broadcast a notification that an application
package has been removed.
BROADCAST_SMS
Allows an application to broadcast an SMS receipt notification
BROADCAST_STICKY
Allows an application to broadcast sticky intents.
BROADCAST_WAP_PUSH
Allows an application to broadcast a WAP PUSH receipt
notification
CALL_PHONE
Allows an application to initiate a phone call without going through
the Dialer user interface for the user to confirm the call being
placed.
CALL_PRIVILEGED
Allows an application to call any phone number, including
emergency numbers, without going through the Dialer user
interface for the user to confirm the call being placed.
CAMERA
Required to be able to access the camera device.
CHANGE_COMPONENT_ENABLED_STATE
Allows an application to change whether an application
component (other than its own) is enabled or not.
CHANGE_CONFIGURATION
Allows an application to modify the current configuration, such as
locale.
CHANGE_NETWORK_STATE
Allows applications to change network connectivity state
CHANGE_WIFI_MULTICAST_STATE
Allows applications to enter Wi-Fi Multicast mode
CHANGE_WIFI_STATE
Allows applications to change Wi-Fi connectivity state
CLEAR_APP_CACHE
Allows an application to clear the caches of all installed
applications on the device.
CLEAR_APP_USER_DATA
Allows an application to clear user data
CONTROL_LOCATION_UPDATES
Allows enabling/disabling location update notifications from the
radio.
DELETE_CACHE_FILES
Allows an application to delete cache files.
DELETE_PACKAGES
Allows an application to delete packages.
DEVICE_POWER
Allows low-level access to power management
DIAGNOSTIC
Allows applications to RW to diagnostic resources.
DISABLE_KEYGUARD
Allows applications to disable the keyguard
DUMP
Allows an application to retrieve state dump information from
system services.
EXPAND_STATUS_BAR
Allows an application to expand or collapse the status bar.
FACTORY_TEST
Run as a manufacturer test application, running as the root user.
FLASHLIGHT
Allows access to the flashlight
FORCE_BACK
Allows an application to force a BACK operation on whatever is
the top activity.
GET_ACCOUNTS
Allows access to the list of accounts in the Accounts Service
GET_PACKAGE_SIZE
Allows an application to find out the space used by any package.
GET_TASKS
Allows an application to get information about the currently or
recently running tasks: a thumbnail representation of the tasks,
what activities are running in it, etc.
GLOBAL_SEARCH
This permission can be used on content providers to allow the
global search system to access their data.
HARDWARE_TEST
Allows access to hardware peripherals.
INJECT_EVENTS
Allows an application to inject user events (keys, touch, trackball)
into the event stream and deliver them to ANY window.
INSTALL_LOCATION_PROVIDER
Allows an application to install a location provider into the Location
Manager
INSTALL_PACKAGES
Allows an application to install packages.
INTERNAL_SYSTEM_WINDOW
Allows an application to open windows that are for use by parts of
the system user interface.
http://android.voxisland.com - (c) VoxIsland 2010
62
63. permissions 2/2
Chapter 19: Security and permissions
INTERNET
Allows applications to open network sockets.
MANAGE_ACCOUNTS
Allows an application to manage the list of accounts in the
AccountManager
MANAGE_APP_TOKENS
Allows an application to manage (create, destroy, Z-order)
application tokens in the window manager.
MODIFY_AUDIO_SETTINGS
Allows an application to modify global audio settings
MODIFY_PHONE_STATE
Allows modification of the telephony state - power on, mmi, etc.
MOUNT_FORMAT_FILESYSTEMS
Allows formatting file systems for removable storage.
MOUNT_UNMOUNT_FILESYSTEMS
Allows mounting and unmounting file systems for removable
storage.
PERSISTENT_ACTIVITY
Allow an application to make its activities persistent.
PROCESS_OUTGOING_CALLS
Allows an application to monitor, modify, or abort outgoing calls.
READ_CALENDAR
Allows an application to read the user's calendar data.
READ_CONTACTS
Allows an application to read the user's contacts data.
READ_FRAME_BUFFER
Allows an application to take screen shots and more generally get
access to the frame buffer data
READ_HISTORY_BOOKMARKS
Allows an application to read (but not write) the user's browsing
history and bookmarks.
READ_INPUT_STATE
Allows an application to retrieve the current state of keys and
switches.
READ_LOGS
Allows an application to read the low-level system log files.
READ_OWNER_DATA
Allows an application to read the owner's data.
READ_PHONE_STATE
Allows read only access to phone state.
READ_SMS
Allows an application to read SMS messages.
READ_SYNC_STATS
Allows applications to read the sync stats
REBOOT
Required to be able to reboot the device.
RECEIVE_BOOT_COMPLETED
Allows an application to receive the ACTION_BOOT_COMPLETED that is
broadcast after the system finishes booting.
RECEIVE_MMS
Allows an application to monitor incoming MMS messages, to record or
perform processing on them.
RECEIVE_SMS
Allows an application to monitor incoming SMS messages, to record or
perform processing on them.
RECEIVE_WAP_PUSH
Allows an application to monitor incoming WAP push messages.
RECORD_AUDIO
Allows an application to record audio
REORDER_TASKS
Allows an application to change the Z-order of tasks
RESTART_PACKAGES
Allows an application to restart other applications.
SEND_SMS
Allows an application to send SMS messages.
SET_ACTIVITY_WATCHER
Allows an application to watch and control how activities are started globally
in the system.
SET_ALWAYS_FINISH
Allows an application to control whether activities are immediately finished
when put in the background.
SET_ANIMATION_SCALE
Modify the global animation scaling factor.
SET_DEBUG_APP
Configure an application for debugging.
SET_ORIENTATION
Allows low-level access to setting the orientation (actually rotation) of the
screen.
SET_PREFERRED_APPLICATIONS
This constant is deprecated. No longer useful, see
addPackageToPreferred(String) for details.
SET_PROCESS_LIMIT
Allows an application to set the maximum number of (not needed)
application processes that can be running.
SET_PROCESS_LIMIT
Allows an application to set the maximum number of (not needed) application
processes that can be running.
SET_TIME_ZONE
Allows applications to set the system time zone
SET_WALLPAPER
Allows applications to set the wallpaper
STATUS_BAR
Allows an application to open, close, or disable the status bar and its icons.
SUBSCRIBED_FEEDS_READ
Allows an application to allow access the subscribed feeds ContentProvider.
UPDATE_DEVICE_STATS
Allows an application to update device statistics.
USE_CREDENTIALS
Allows an application to request authtokens from the AccountManager
VIBRATE
Allows access to the vibrator
WAKE_LOCK
Allows using PowerManager WakeLocks to keep processor from sleeping or
screen from dimming
WRITE_APN_SETTINGS
Allows applications to write the apn settings
WRITE_CALENDAR
Allows an application to write (but not read) the user's calendar data.
WRITE_CONTACTS
Allows an application to write (but not read) the user's contacts data.
WRITE_EXTERNAL_STORAGE
Allows an application to write to external storage
WRITE_GSERVICES
Allows an application to modify the Google service map.
WRITE_HISTORY_BOOKMARKS
Allows an application to write (but not read) the user's browsing history and
bookmarks.
WRITE_OWNER_DATA
Allows an application to write (but not read) the owner's data.
WRITE_SECURE_SETTINGS
Allows an application to read or write the secure system settings.
WRITE_SETTINGS
Allows an application to read or write the system settings.
WRITE_SMS
Allows an application to write SMS messages.
WRITE_SYNC_SETTINGS
Allows applications to write the sync settings
http://android.voxisland.com - (c) VoxIsland 2010
63
64. Chapter 20: Debugging
suffer function:
public void suffer() {
for (int i=0; i<1000; i++) {
for (int j=0; j<1000; j++) {
int k = i*j;
}
}
}
http://android.voxisland.com - (c) VoxIsland 2010
64
66. Chapter 21: Publish an application
1. Test
2. Setup an Icon
3. Add a license
4. Clean-up your code
5. Version your application
6. Create a certificate
7. Export for release
8. Sign
9. Retest
10. Publish
http://android.voxisland.com - (c) VoxIsland 2010
66
67. Chapter 21: Publish an application
2. Setup an Icon:
Check the Icon Design Guidelines at http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
6. Create a certificate
keytool -genkey -v -keystore com.voxisland -alias jaykey -keyalg RSA -validity 10000
8. Sign the application
jarsigner -verbose -keystore com.voxisland simplelist.apk jaykey
Optimize
zipalign -v 4 simplelist.apk simplelist2.apk
http://android.voxisland.com - (c) VoxIsland 2010
67