Friday, 13 July 2012

How to set Background color of Blackberry Screen

For setting background color in Blackberry screen we need to do the following.

Disable Vertical scrolling of the main screen.

Now create a VerticalFieldManager with vertical scroll enabled. This will be the main manger where screen component have to add. Set the width and height of this manager as Screen width and height by overriding sublayout() method.
And override paint() method to set backgroung color

Here is the example code with above implemented.


import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.system.*;

class TestScreen extends MainScreen{

    private VerticalFieldManager verticalManager;
    private HorizontalFieldManager hrzManager;
    
    TestScreen() 
    {    
        super(NO_VERTICAL_SCROLL);

        //rather than  adding component 
        //in the mainScreen add components
        //in this verticalManager and then
        //add this manager to mainScreen  
        verticalManager = new VerticalFieldManager(
                          Manager.VERTICAL_SCROLL | 
                          Manager.VERTICAL_SCROLLBAR)
        {
            public void paint(Graphics graphics)
            {
               //blue 
               graphics.setBackgroundColor(0x000000ff);
               graphics.clear();
               super.paint(graphics);
            }            
            protected void sublayout( int maxWidth, int maxHeight )
            {
               int width = Display.getWidth();
               int height = Display.getHeight();
               super.sublayout( width, height);
               setExtent( width, height);
            }
        };
     
        ButtonField button1 = new ButtonField("Button1");
        ButtonField button2 = new ButtonField("Button2");
        ButtonField button3 = new ButtonField("Button3");
        ButtonField button4 = new ButtonField("Button4");
        ButtonField button5 = new ButtonField("Button5");
        
        verticalManager.add(button1);
        verticalManager.add(button2);
        verticalManager.add(button3);
        verticalManager.add(button4);
        verticalManager.add(button5);
        this.add(verticalManager);
        
    }
}


Also have a look at this KnowledgeBase Article for getting better idea.

How to Read, Write and Copy file in Blackberry

It is very common feature in Blackberry to read/write/copy file programatically in BlackBerry.

Read file in the SDCard in the following way:

InputStream inputStream = null;
FileConnection fileConnection = (FileConnection) Connector.open( "file:///SDCard/testfile.txt");
if (fileConnection.exists())
{
inputStream = fconn.openInputStream();
}


ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[BUFFER_SIZE];
while (true) {
int bytesRead = inputStream.read( buffer, 0, BUFFER_SIZE );
if (bytesRead == -1)
break;
byteArrayOutputStream.write( buffer, 0, bytesRead );
}
byteArrayOutputStream.flush();
byte[] result = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
String resultString = new String(result);



Write/Save file in SDCard in the following way:

FileConnection fc = (FileConnection) Connector.open(System.getProperty("file:///SDCard/"+"fileName.txt"),Connector.READ_WRITE);
if(!fc.exists())
{
fc.create();
}
OutputStream os =fc.openOutputStream();
os.write("Test");
os.close();
fc.close()




Copy file in SDCard in the following way:

public static void copyFile(String srFile, String dtFile)
{
try
{
FileConnection f1;
FileConnection f2;

f1 = (FileConnection) Connector.open(srFile,Connector.READ_WRITE);
f2 = (FileConnection) Connector.open(dtFile,Connector.READ_WRITE);
if(!f2.exists()) // if file does not exists , create a new one
{
f2.create();
}
InputStream is = f1.openInputStream();
OutputStream os =f2.openOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) > 0)
{
os.write(buf, 0, len);
}
is.close();
os.close();
}
catch(IOException e)
{

}
}



Also check this link for more information about file path.

Blackberry - Knowledge Base Article Links



Some Knowledge Base Article Links.

1. Application Deployment
#########################

Genaral Topics
--------------
How To - Define the position of an application icon on the BlackBerry
        smartphone Home screen How To - Handle stored data when removing an 
        application
How To - Load applications onto a BlackBerry smartphone
Support - A module with that name already exists in the application
Support - Application installation errors
Support - BlackBerry MDS Runtime 1.1.2 with BlackBerry Device Software 4.3.0
         stops responding when an application calls from the on_init script
Support - MIDlet has verification error at offset
Support - Module net_rim_bbapi_mail not found
Support - Protocol not found- null error
Support - Unable to activate custom theme or theme not listed
Support - Version 4.0 applications do not run on the device
What Is - Indications of insufficient space to install an application on 
         the BlackBerry device
What Is - JVM error codes
What Is - JVM error codes for BlackBerry Device Software 4.2 and later


OTA Download
------------
How To - Programmatically read the attributes of a JAD file
Support - 907 Invalid Jar Error when installing an application wirelessly  
Support - Warning - This application does not contain a signature. 
         It might not be from a trusted source.
What Is - The file size limit for wireless downloads
What Is - The required MIME types for a web server to serve
          BlackBerry applications


Desktop Loading
---------------
How To - Configure ALX files to make an application 'required'
How To - Create a single ALX file to install multiple versions of an application  
How To - Install the BlackBerry API update via Desktop Manager or wirelessly 
How To - Remove wirelessly downloaded applications
How To - Update the registry to deploy Java applications using Desktop Manager
Support - Handheld displays net_rim_xml not found error  
Support - Invalid digital signature errors when installing an application  
Support - No system software was found for your device  
Support - Unspecified error encountered [J-0x00000011] 
         when upgrading a third-party application  
What Is - An .alx file


Enterprise server application push
-----------------------------------
How To - Deploy an icon to the BlackBerry smartphone for a web application or URL


Blackberry Application Web Loader
-----------------------------------
Support - The BlackBerry Application Web Loader is unable to create a local 
         copy of files


2. Java APIs & Samples
#######################

Memory Management
-----------------
How To - Download large files using the BlackBerry Mobile Data System
How to - Prevent a memory leak when implementing an ApplicationMenuItem  
Sample Code ---- Object Groups - Why and How to Use Them
What Is - File storage limits in the Content Store
What Is - Object Grouping - Using resources effectively

Mail
------
How To - Retrieve the default email address for the device  
How To - Access HTML email messages
How To - Capture the contents of email and PIN messages before sending  
How To - Create a custom Attachment Handler on the BlackBerry device  
How To - Create an Attachment  
How To - Create and send messages  
How To - Display a PopupScreen from a SendListener  
How To - Implement the ViewListener interface  
How To - Programmatically send a PIN message  
How To - Retrieve More of a Message  
How To - Send a message from a non-default email address  
Support - Error when sending a PIN message - MessagingExceptionPin message 
         not sent. Do not have the permissions to send the message.
Support - Transport.more fails to retrieve all of a message  
What Is - Application is not notified when new messages arrive


Invoking Blackberry Application
-------------------------------
How To - Invoke applications
How to - Make a running UI application go to the background and resume
        in the foreground
How To - Open a file in a Documents To Go application
What Is - Application does not provide invocation feedback

GPS
----
How To - Add an ApplicationMenuItem to BlackBerry Map  
How To - Configure a Bluetooth GPS Receiver for use with the Location API  
How To - Define criteria to retrieve a GPS fix  
How To - Detect when GPS is no longer available and when to reset the
         LocationProvider  
How To - Invoke BlackBerry Maps  
How To - Manage simultaneous GPS and phone usage on the BlackBerry 8703e and 
        the 7130e smartphones  
Support - Cellsite fix prevents acquiring autonomous GPS fixes  
Support - Incorrect network time  
Support - Invoking BlackBerry Maps throws unexpected runtime exception  
What Is - Best practices for designing GPS applications for BlackBerry 
          smartphones operating on CDMA networks  
What Is - BlackBerry Maps location document format  
What Is - The BlackBerry smartphone models and their corresponding 
         GPS capabilities  
What Is - Verizon GPSSettings signing requirement


Cryptography APIs and Security
------------------------------
How To - Save requested application permissions in the Application
         Permissions screen  
How To - Create a Unique long from a String  
How to - Use Advanced Encryption  
How to - Use Basic Encryption  
How To - Use Content Protection


Browser API
-----------

How To - Change the RenderingOptions of a RenderingSession  
How To - Create a Fixed Size BrowserField  
How To - Create a web icon  
How to - Create a web signal registration application  
How To - Enable cookies in BrowserField  
How To - Invoke a non-default browser session  
How To - Invoke the browser  
How To - Invoke the browser with raw HTML  
How To - Invoke the default browser
How To - Perform a browser push over SSL
What Is - A ControlledAccessException is thrown when using the HttpFilterRegistry  
What Is - The Push notification format

Bluetooth - USB - Serial
-------------------------
How To - Run the BlackBerry Serial Port Demo  
How To - Use the Bluetooth classes  
How To - Use the ServiceRouting API  
Support - IOException thrown when opening a server-side Bluetooth connection 
What Is - Bluetooth support on BlackBerry devices


Audio & Video
--------------
How To - Invoke the media application  
How To - Obtain the media playback time from a media application  
How To - Play audio in an application  
How To - Play video within a BlackBerry smartphone application  
How To - Record audio on a BlackBerry smartphone  
How To - Specify Audio Path Routing  
How To - Support streaming audio to the media application  
How To - Take a snapshot using the built-in camera of a BlackBerry smartphone  
Known Issue - Delay in playing audio when streaming to a Bluetooth headset  
Support - Alert.startBuzzer() does not work  
Support - Playing audio in an application pauses the Media application 
          on BlackBerry smartphones running on the CDMA network  
What Is - Media application error codes 
What Is - setMediaTime does not work for AMR files  
What Is - Supported audio formats


Menu Item and Options
-----------------------
How To - Add a custom menu item to an existing BlackBerry application  
How To - Add application options to the BlackBerry Options  
How To - Handle ApplicationMenuItem Invocation


MIDP & CLDC APIs
----------------
How To - Access images in a MIDP application  
How To - Capture volume keys in a MIDlet  
How To - Create a MIDlet that uses custom animation  
How To - Create an auto-start MIDlet using the PushRegistry  
How To - Establish an HTTP connection  
How To - Implement basic HTTP authentication  
How To - Register a MIDlet with the PushRegistry   
How To - Use RMS storage efficiently in BlackBerry applications  
Support - Classname does not exist in the current application package  
Support - Verification error using javax.microedition.rms.RecordStore on
          BlackBerry Device Software 3.8 and 4.0  
What Is - Cannot run a MIDP 2.0 application in BlackBerry Device Software 4.0


Micellaneous
------------
How To - Access and Obtain Service Books on a device
How To - Capture Signature on the BlackBerry Storm  
How to - Create a singleton using the RuntimeStore  
How To - Detect Alt and Shift key clicks  
How To - Determine if a BlackBerry smartphone supports Wi-Fi capabilities  
How to - Display custom messages in the request permission dialog  
How To - Format the electronic serial number (ESN)  
How To - Get time zone offsets with DST  
How To - Implement a Comparator to compare objects  
How To - Implement a string splitter based on a given string delimiter  
How To - Interpret wireless network signal levels How To - Write safe 
          initialization code  
Known Issue - The RadioStatusListener.mobilityManagementEvent method
             is not invoked  
Support - Preventing verification errors  
What is - Event injection  
What Is - New and Deprecated APIs in BlackBerry Java Development Environment 4.0
What Is - New and Deprecated APIs in BlackBerry Java Development Environment 4.1
What Is - New and Deprecated APIs in BlackBerry Java Development Environment 4.2


Networking
----------
How to - Determine the country code of the current mobile subscriber 
         How To - Determine the MCC and MNC of the current network


Persistence
-----------
How To - Programmatically determine if a microSD card has been inserted

Phone
-----
How To - Implement the PhoneListener interface  
How To - Log Phone Calls  
Support - The getDevicePhone method returns null


PIM-PDAP
--------
How To - Access Address Book contacts  
How To - Add a PIM item to a custom category  
How To - Create an Event within the Calendar application  
How To - Launch the Address Book and return a contact  
How To - Use Remote Address Lookup through coding  Support -
         Application stops receiving event notifications when using the
        PIMListListener API


SVG Content
-----------
How to - Use Plazmic Content Developer's Kit in your BlackBerry Application
Known Issue - Irregular focus behaviour on first hotspot when loading PME content  
Known Issue - Losing the anchor when rendering SVG images in MIDlets  
What Is - Browser fails to retrieve resources using relative URLs in PME content


Synchronization APIs
--------------------
How To - Backup and restore small amounts of data using SyncItem  
How To - Compile the Desktop Add-In sample  
How To - Save data with RMS  
How To - Store persistent data on the BlackBerry smartphone


System Classes
--------------
How To - Add plain text or binary files to an application 
How To - Allow an application to restart itself  
How to - Capture power change events  
How to - Code time-sensitive applications  
How To - Detect if the BlackBerry smartphone is holstered or flipped  
How To - Display a GUI when the BlackBerry device starts up  
How To - Enable the backlight and prevent the screen from turning off  
How To - Launch a third-party application from another third-party application  
How To - Obtain the operating system version of a BlackBerry wireless device 
How to - Programmatically install and upgrade applications  
How To - Retrieve the BlackBerry Device Software version  
Support - An unsupported API was called by the JVM RadioGetGprsState  
Support - getObjectSize and getAllocated return 0  
What Is - Global Events and Global Event Listeners  
What Is - Supported System.getProperty keys  
What Is - System Global Events  
What Is - The reason a reset is required when upgrading an application



Voice Notes
----------
How To - Use the Voice Notes APIs
Samples --- VoiceNotesDemo Sample Code


XML
---
How To - Control the behavior of white space when parsing an XML document  
How To - Use the XML Parser


User Interface
--------------

Fields
======
How To - Add a TreeField to a device screen  
How To - Apply a phone number filter to an AutoTextEdit field  
How To - Change the text color of a field  
How To - Create a colour ListField 
How To - Create a custom field using attributes of other UI objects  
How To - Create a custom width for a ListField  
How To - Create a ListField with check boxes  
How To - Create a Scrollable Image Field  
How To - Create custom fields  
How To - Determine the number of visible items on the BlackBerry device screen  
How To - Display a progress bar in handheld applications
How To - Display an animated GIF  
How To - Display dates and times in handheld applications  
How To - Format text in a RichTextField  
How to - Make list items appear on a screen  
How To - Show focus changes using BitmapField  
How to - Use an image in an application  
How To - Use the paint() method to draw objects to the screen  
How To - Work around ListField painting issue in early versions of BlackBerry 
         Device Software version 4.2.2  
Support - A Field's font is displayed incorrectly when set in the paint method  
Support - Error starting [Application Name].Symbol'DateField.[init] not found  
Support - NullPointerException is thrown when the isEditable and 
          fieldChangeNotify methods of EditField are overridden  
Support - The Custom Field is not drawing properly



Managers
========
How To - Create a custom layout manager for a screen  
How To - Create a screen with stationary headings  
How To - Create tabbed view screens  
How To - Manage bitmaps in an application using field managers  
How to - Perform double buffering using the BlackBerry UI  
How To - Place multiple UI fields on one line  
How to - Use the User Interface API to create an editable table  
Support - My scrollable manager is not scrolling



Screens
=======
How to - Change the background color of a screen  
How To - Clear the status of a MainScreen  
How To - Create a custom Dialog  
How To - Create a File Selection Popup Screen  
How To - Create a splash screen  
How To - Have Your Application Perform an Action after a Global Alert  
How to - listen for a dialog closed event  
How To - Obtain the Height and Width of a Screen  
How To - Prevent a UiApplication from being listed in the application switcher  
How To - Properly Push and Pop Global Screens  
How to - Protect BlackBerry applications with a password screen  
How To - Remove the default "Close" or "Hide" MenuItems from a Screen  
How to - Update a screen on the Main Event Thread  
How To - Use a Backdoor Sequence



General
=======
How To - Add Copy, Paste, and other context-specific items to a menu
How To - Alert a user from a Background application  
How To - Capture and save a screen shot  
How To - Change fonts in a BlackBerry application  
How To - Control the screen orientation  
How To - Create an icon for an application  
How To - Define a rollover icon for an application  
How To - Detect when an application or screen moves to the foreground 
         or background  
How To - Distinguish between a full menu and a primary actions menu  
How to - Leverage pattern matching in BlackBerry smartphone applications 
         to provide an integrated user experience  
How to - Make your BlackBerry application more user-friendly  
How to - Manage UI interactions  
How To - Programmatically determine type of keyboard  
How To - Use a background image in application screens  
Known Issue - Screen.invalidate() does not cause a subsequent call to paint()  
What Is - BlackBerry UI hierarchy  
What Is - Image formats used in BlackBerry applications  
What Is - Screen buffer size



3. Blackberry Administration API
################################
How To - Get started with the BlackBerry Administration API
What Is - Sample application demonstrating BlackBerry Administration API
          technology



4. Blackberry JDE
#################

Executing clean.bat does not delete third-party applications from the
 BlackBerry Smartphone Simulator  
How To - Add a Certificate to DeviceKeyStore
How To - Add files to a project  
How To - Compile a JAR file into a BlackBerry Library  
How To - Compile a MIDlet into a COD file  
How To - Compile an application  
How To - Configure an application to start automatically when the device is
         turned on  
How To - Configure multiple versions of BlackBerry JDE on the same computer  
How To - Configure the BlackBerry Mobile Data Service Simulator to allow 
         reliable push connections  
How To - Connect the JDE to a specified simulator bundle  
How To - Debug an application running on a live BlackBerry smartphone  
How To - Detect a deadlock using the JDE  
How to - Detect system availability on startup  
How To - Determine the Current Network Name  
How To - Enable a keyboard shortcut for an application  
How To - Find memory leaks in code  
How To - Gain access to the BlackBerry JDE  
How To - Get started with the BlackBerry JDE  
How To - Obfuscate code for a BlackBerry application  
How To - Setup an alternate entry point for my application  
How To - Update the Path environment variable  
How To - Use Javaloader to take a screen shot  
How To - Use the Coverage tool to provide code coverage when testing applications  
How To - Use the Profiler tool to optimize application code  
How To - Use the RAPC compiler  
Support - BlackBerry Java Development Environment and supported locales  
Support - BlackBerry JDE 3.7 IDE Fatal Error on startup  
Support - BlackBerry JDE crashes when using the Objects view  
Support - BlackBerry JDE fails to start  
Support - BlackBerry JDE JAR files no longer function after WinRAR is installed  
Support - BlackBerry JDE stops responding when viewing project properties  
Support - Compiled application size is larger in BlackBerry JDE 4.3.0 or later  
Support - Connection Timeout error when launching JDWP from Eclipse  
Support - Error - com.sun.tools.javac.code.Symbol$CompletionFailure -
         file net\rim\device\internal\ui\Border.class not found  
Support - Error cod data section too large
Support - Error when debugging - Cannot find RIMIDEWin32Util.dll. 
          This is a required component of the IDE.  
Support - How to fix BlackBerry JDE screen artifacts  
Support - I/O Error CreateProcess  
Support - I/O Error Import file not found appears when building an application  
Support - Missing stack map at label  
Support - Ordinal 11 could not be located in the dynamic link library DSound.dll  
Support - Signing does not apply the RIM Runtime signature key  
Support - Unable to Open Socket when running JDWP 
Support - Vtable record size exceeds maximum record size
What Is - A library and how to use it  
What Is - A stack trace  
What Is - Appropriate version of the BlackBerry JDE  
What Is - Control Flow Verification Information Too Large 
What Is - Introduction to the BlackBerry JDE  
What Is - 'javaw' error when starting the JDE after installation  
What Is - Supported versions of Java for different BlackBerry JDE versions  
What is - The Alias List for a project in the BlackBerry JDE 
What Is - The debugger  
What Is - The project size limit
What Is - Writing applications for the Java-based BlackBerry Wireless
          Handhelds in C and C++ native code