Showing posts with label Blackberry. Show all posts
Showing posts with label Blackberry. Show all posts

Friday, May 21, 2010

Different ways to make an HTTP or socket connection in BlacBerry

>

Procedure

The BlackBerry Java Development Environment (BlackBerry JDE) application programming interface (API) reference includes five ways to make a Hypertext Transfer Protocol (HTTP) or socket connection.

BlackBerry Enterprise Server using the BlackBerry MDS Connection Service

The BlackBerry MDS Services are included in the BlackBerry Enterprise Server software and handle all browser or connection requests and route the requests accordingly. Data flowing between the BlackBerry smartphone and BlackBerry Enterprise Server is encrypted with Advanced Encryption Standard (AES) or Triple Data Encryption Standard (Triple DES). A connection made through BlackBerry MDS provides seamless roaming across wireless service providers that support BlackBerry smartphone service.
By default, all BlackBerry smartphone models, except the BlackBerry 6500 Series and the BlackBerry 7500 Series, use BlackBerry MDS. The following is an example:
(HttpConnection) Connector.open ("http://www.testserver.com");
To make sure that an application uses BlackBerry MDS Services as its connection pathway on all BlackBerry smartphone models, append the deviceside=false parameter to the end of the URL. The following URL is an example:

(HttpConnection)Connector.open ("http://www.testserver.com;"+
"deviceside=false");

BlackBerry Internet Service

Applications are also able to make connections through the BlackBerry Internet Service. This connection route is available to third-party developers and is subject to an application approval process. Data flowing over this connection is not encrypted. Hypertext Transfer Protocol over Secure Sockets Layer (HTTPS) or Secure Sockets Layer (SSL) can be used to secure a connection. A BlackBerry Internet Service connection provides seamless roaming across wireless service providers that support BlackBerry smartphone service. Currently, this transport is only available to BlackBerry Alliance Program members, subject to approval. Information about the BlackBerry Alliance Program can be found at the following web site: http://na.blackberry.com/eng/partners/alliance.jsp

Direct TCP stack

For BlackBerry smartphones running BlackBerry Device Software 3.8 and later, a direct TCP stack is included, which allows a direct TCP connection to be opened from the BlackBerry smartphone without using BlackBerry MDS.
For BlackBerry smartphones operating on the iDEN network, including the BlackBerry 6510 smartphone, BlackBerry 7510 smartphone, BlackBerry 7520 smartphone, and BlackBerry 7100i smartphone, a direct TCP connection is used if the deviceside parameter is not present. BlackBerry smartphones not operating on the iDEN network use BlackBerry MDS as the default connection if the deviceside parameter is not specified.
If BlackBerry MDS is not available at the time of connection, the BlackBerry smartphone reverts to direct TCP.
For the BlackBerry smartphone to use direct TCP, the user name and password fields must be completed under Options > TCP or supplied by the application. this article explains how to specify access point name (APN) information in a direct TCP connection.
To override the default behaviour of the default connection on the BlackBerry smartphone, the deviceside parameter must be included within the connection statement. The following is an example:

(StreamConnection)Connector.open("socket://testserver:600;
"+
"
deviceside=true");

Wi-Fi network

A Wi-Fi enabled BlackBerry smartphone is able to connect over a Wi-Fi network to the BlackBerry Infrastructure. The BlackBerry Infrastructure exists between a BlackBerry smartphone and the BlackBerry Internet Service or BlackBerry Enterprise Server, allowing for connectivity to these components. A BlackBerry smartphone can also be configured to connect directly to a BlackBerry Enterprise Server using a virtual private network (VPN) connection over a Wi-Fi network. What this means is that applications that are making a connection through a BlackBerry Enterprise Server or BlackBerry Internet Service (options 1 and 2 ) can have their connections automatically routed through a Wi-Fi connection without any special logic required in the application. Applications can also make a connection over a Wi-Fi network directly to their destination server, bypassing the BlackBerry Infrastructure, BlackBerry Enterprise Server and BlackBerry Internet Service. To specify that a connection must be made over a Wi-Fi network, the interface=wifi parameter is used. The following is an example:

(StreamConnection)Connector.open("socket://testserver:600;
"+
"
interface=wifi");

Wireless service provider WAP 1.x gateway

The connection string uses WAP parameters, which are hosted by a wireless network provider. Not all wireless service providers support connections through their WAP gateway. Contact the wireless network service to find out if support exists and to obtain a listing of their WAP gateway parameters.
The following is an HTTP connection over a WAP gateway:

(HttpConnection)Connector.open("http://wap.google.com;
"+
"
WAPGatewayIP=127.0.0.1;WAPGatewayAPN=carrier.com.gprs")
The WAPGatewayIP and WAPGatewayAPN values are required parameters. Each parameter specified must be separated by a semicolon. The following is a table of supported WAP parameters:







Parameter
Description
WapGatewayIP
IP address of the gateway.
WapGatewayAPN
APN for General Packet Radio Service (GPRS) networks only. For testing purposes, you can use rim.net.gprs
WapGatewayPort
Gateway port value. If port 9203 is specified, Wireless Transport Layer Security (WTLS) is used unless WapEnableWTLS=false is specified.
WapSourceIP
IP address of the source.
WapSourcePort
Source port value.
TunnelAuthUsername
User name for APN session, when Password Authentication Protocol (PAP) or Challenge Handshake Application Protocol (CHAP) authentication is used.
TunnelAuthPassword
Password for APN session, when PAP or CHAP authentication is used.
WapEnableWTLS
Explicitly turns on or turns off WTLS. If this parameter is not specified, WTLS is used by default for connections to port 9203.

Wireless service provider WAP 2.0 gateway

BlackBerry Device Software 4.2.0 and later includes the ability to connect through a WAP 2.0 gateway. This is done by locating the service record on the BlackBerry for the WAP 2.0 gateway and using its UID when making the connection. The following code sample demonstrates how this can be done.

 
ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] records = sb.findRecordsByCid("WPTCP"); 
String uid = null; 
for(int i=0; i < records.length; i++) 
{
    //Search through all service records to find the 
    //valid non-Wi-Fi and non-MMS 
    //WAP 2.0 Gateway Service Record.
    if (records[i].isValid() && !records[i].isDisabled()) {
        if (records[i].getUid() != null && 
                 records[i].getUid().length() != 0) {
            if ((records[i].getUid().toLowerCase().indexOf("wifi")==-1) 
&& (records[i].getUid().toLowerCase().indexOf("mms")==-1)) {
                    uid = records[i].getUid(); 
                    break;
            }
        } 
    }
} 
if (uid != null) {
    //open a WAP 2 connection
    Connector.open(_url + ";ConnectionUID=" + uid);
} else {
    //Consider another transport or alternative action.
}

Friday, May 14, 2010

Mobile thick clients vs thin clients

For many application developers, the fastest, easiest way to introduce a mobile solution was to "chop down" an existing Web-based application. Users that had a device with a browser could then access the applications. However, because the resulting applications were not designed for the navigation capabilities of a mobile device or the smaller bandwidth, the user experience suffered. These problems can be solved by using a thick client instead of a thin client.

With a thin client, there is nothing running on the device except the presentation. All the content is on the host. The data, along with the rules to display it, are sent down and rendered on the local machine. Everything is done on the server; every request requires going back to the host. With a thick client, however, the presentation engine is on the local machine, which does the work.

The need for thick clients is driven by the complexity of the information and the presentation demanded by
mobile users. Mobile users, too, want robust applications and a good user experience. Years ago with the
PC, users went to a Web site and got straight HTML. PC users said, "That's not good enough." Then came
dynamic HTML, Java applets, Flash, and great plug-ins.

It depends on
  • what application you want to build
  • which audience you want to target
  • Operating cost
  • Billing and revenue models
Thin clients are good for:
  • Displaying regularly changing information eg. news.
  • Casual one-off browsing, where the user is unlikely to ever need to come back and benefit from having any sort of state remembered, and not being able to access any content is not a serious problem (due to lack of signal, etc).
  • Very changeable data with simple display requirements that change unpredictably over time, with minimal data entry requirements.
  • Situations where reliable network connections are guaranteed – either fast connections, or very small nuggets of content that can be found very quickly.
Thick clients are good for:
  • Repeated user experiences – local secure caching can reduce data entry, always a significant pain point on mobile.
  • Intelligent data delivery can reduce costly data overheads whilst providing faster responses for the user for known types of data set.
  • High interactivity and improved user experiences with many potential data visualisation models and on-client validation (minimising round trip requirements to the server, which cost money and time).
  • Improved branding around content, which only ever has to be downloaded once rather than at the start of ever session – handsets rarely dedicate persistent storage to browser caches so ever visit to a branded site reloads many Kbs of images, CSS etc.
  • Real security, guaranteed – there are known issues with Wap security which can even affect Wap2 browsers running through legacy APNs.
  • Offline access – content can be stored locally to browse even when there is no signal (eg. Tube maps), data entry can be performed when required and then submitted to a server asynchronously etc.
  • Data roaming can be incredibly expensive so for content like travel guides designed to be read abroad, or interactive services for which Java can choose to use SMS instead of GPRS, there are big cost savings to be had.
  • Precise optimal rendering of certain types of content, for example barcodes (used for ticketing etc) which would be useless if the handset decided to rescale them badly as can happen when displaying MMS messages or images in browsers.
First is the ability to do local processing and local data storage. With a thin client, modifying one item could require making several trips back to the host. And, because the bandwidth in the wireless world is so small, bringing pages down is a long, arduous task. A thick client, however, enables mobile users to work offline with the local data that is brought down; everything is done locally.

The advantage of a thick client's local processing ability can be seen when a user makes a mistake while entering data. With a thin client, the user would be prompted again, requiring another trip. With a thick client, you could use an "if" statement to determine if the information is correct before sending it to the host, which saves time.

Wednesday, May 12, 2010

How To - Use the preprocessor in BlackBerry JDE

RIM Application Program Compiler (RAPC) supports a few basic preprocessor directives. The directives can be used to take advantage of features available in later BlackBerry smartphones and builds without fragmenting into multiple code lines, or to make it easy to remove debug output for final versions.
The following directives are supported:

Enable the preprocessor
//#preprocess

If, else, end if block:
//#ifdef

//#else

//#endif
If is defined, then the code between #ifdef and else is executed; otherwise, #else to #endif is executed. The else section is not mandatory.
If not, else, end if block:
//#ifndef

//#else

//#endif
#ifndef is the opposite of #ifdef. If is not defined, the code is executed.
When using the BlackBerry JDE Plug-in for Eclipse or BlackBerry JDE 4.7 and later, you can set preprocessor defines in the Project Properties window, on the Compile tab as shown in the following image:



If the Preprocessor defines box is not present in Eclipse®, update the BlackBerry JDE Plug-in for Eclipse to the latest available version. If you have not configured Eclipse to use the BlackBerry JDE Plug-in for Eclipse update site, this can be accomplished by following the steps found at http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp.
To use the preprocessor in BlackBerry JDE prior to version 4.7, you must manually add it to the Java® development project (JDP) file. To do this, complete the following steps:
  1. Open the JDP file with an editor.
  2. Go to the line that starts with Options.
  3. At the end of the line, add -define ;;…; as in the following example:
  4. Options=-quiet -define=FOO;PREPROCESSOR
    The -define statement is simply an argument passed to the RAPC. Therefore, you can use it with your own command line build scripts. This functionality has been present since RAPC version 4.0.
    If you use the preprocessor, make sure at least one definition is defined, typically PREPROCESSOR, or it will not engage.

Thursday, June 11, 2009

Converting a J2ME MIDlet to a BlackBerry COD

Converting a J2ME MIDlet to a .COD involves the following steps:

  1. Download and install the RIM Java Development Environment
  2. Download and install Java SDK
  3. Copy the jad & jar files in question to the /bin/ directory of your BlackBerry JDE installation
  4. From the command line (make sure you are in the bin directory of your RIM JDE installation) type:
rapc import=“$your_JDE_dir\lib\net_rim_api.jar" codename=$your_app -midlet jad=$your_app.jad $your_app.jar
Where,
$your_JDE_dir  - is the directory of your RIM JDE installation,
$your_app          - is the name of the MIDlet you're trying to convert $your_app.jad        - is the name of the MIDlet descriptor and
$your_app.jar     - is the name of the MIDlet jar file
  1. The following files are generated:
$your_app.debug
$your_app.cod
  1. $your_app.cod is used to load the application onto the BlackBerry 
 To load the application onto the BlackBerry Simulator:
  • Launch the BlackBerry Device Simulator by selecting Start => Research In Motion => BlackBerry JDE => Device Simulator.
  • Once the simulator is loaded, install the .cod file by selecting File => Load Java Program and load the $YOUR_APP.cod from $JDE/bin/
  • On the BlackBerry Simulator desktop find your application and launch it. 

Monday, April 27, 2009

General Coding Tips

Avoid the Object.getClass() Method

Avoid using the Object.getClass() method, because it is not efficient and it produces garbage (the Class object) that is never collected. Also avoid using the example.class literal. Behind the scenes, this generates Class.forName(“Example”).

Writing Efficient Loops

You should always factor loop invariant code out of a loop, as in the following example:

    for(int i = 0; i < >
...

}

This code results in vector.size() getting called each time through the loop, which is inefficient. If your container is likely to have more than one element, it is much faster to assign the size to a local variable. In addition, this example using pre-increment (++i) results in smaller code than post-increment (i++). The optimized code appears below:

     int size = vector.size();
for(int i = 0; i < style=""> ...
}

Alternatively, if the order in which you iterate over items is not important, you can iterate backward. Iterating backward avoids the extra local on the stack, and the comparison is also faster, as the following example illustrates:

for(int i = vector.size() - 1; i >= 0; --i) {

...

}



Optimizing Subexpressions

If you ever use the same expression twice, do not rely on the compiler to optimize it for you. Use a local variable, as in the following example:

one(i + 1); two(i + 1); // Avoid
int tmp = i + 1; 
one(tmp); 
two(tmp); // Prefer

Avoid java.util.Enumeration
Avoid using java.util.Enumeration unless you are using it to hide data (in other words, returning an Enumeration of data rather than the data itself). The following example shows a typical use of an Enumeration:

for (Enumeration e = v.elements(); e.hasMoreElements();) {
   o = e.nextElement();
   ...
}

Asking a vector or hash table for an Enumeration object creates unnecessary garbage and is slow. Instead, you can iterate over the elements yourself, as in this example:

for(int i = v.size() - 1; i >=0; --i) {
   o = v.elementAt(i);
   ...
}

If the vector might be modified by another thread, you must synchronize the iteration:

synchronized(v) {
   for(int i = v.size() - 1; i >=0; --i) {
      o = v.elementAt(i);
      ...
   }
}

In Java 2 Platform, Standard Edition (J2SE), you would use an Iterator for this, but Iterators are not available in Java 2 Platform, Micro Edition (J2ME).

Returning null
If you are writing a public method that returns an object, it should never return null unless the following occurs:

  • a null is expected during normal program operation.
  • the javadoc @return parameter states that null is a possible return value.

If a null is not normally expected, then the method should throw an appropriate exception, which forces the caller to deal with the problem explicitly. The caller is not expected to check for a null return value, unless the documentation specifies otherwise.

Passing null into Methods
Do not pass null parameters into an API method unless the API Reference documentation explicitly states that the method supports them.

Passing null into a Constructor
To avoid ambiguity when passing a null into a constructor, you should use this form:

new someObject ((Object)null);

A class can have two or more constructors, such as SomeObject(String) and SomeObject(Object), where passing in a null does not identify which constructor to use. As a result, the compiler reports an error. Not all supported constructors necessarily appear in the API Reference documentation, because some constructors are for internal use only. By casting the null to the appropriate object, you indicate precisely which constructor the compiler should use. This practice also ensures forward compatibility if later releases of the API add new constructors.

Optimizing Division Operations
Division operations are slow on the BlackBerry Wireless Handheld because its processor does not have a hardware divide instruction. When you write code that divides a positive number by two, you should use “shift right by one” instead. The following example illustrates this:

midpoint = width / 2; //avoid this
int = width >> 1; //prefer this

This does not work for negative values. Only use “shift right” (>>) when you know you are dealing with a positive value. It does not work for negative values.

Managing Garbage Collection
Avoid calling System.gc() to perform garbage collection. On a full handheld, this could take two seconds. Let the virtual machine (VM) collect garbage automatically.


Casting Using instanceof
It is more efficient to use instanceof instead of classCastException to evaluate whether a cast succeeds. Here is an example of using a try/catch block to catch the classCastException:

try {
   (String)x.whatever();
} catch(ClassCastException e) {
   // something else
}

Alternatively, you can use instanceof operator:

if(x instanceof String) {
   (String)x.whatever();
} else {
   // something else
}

Using instanceof is faster. The only time you should use the try/catch block is when the failure of the cast is an exceptional circumstance. The BlackBerry Java Development Environment (JDE) compiler and the VM are optimized to perform only one class check in the first block of code. This is true of any code in which the cast is run immediately following a branch determined by an instanceof check. Always perform the cast immediately after the branch so that the optimization can be performed.

Using Longs for Unique Identifiers
You should use longs rather than strings for unique constants, such as globally unique identifiers (GUIDs), hash table keys, and state/context identifiers. So that unique identifiers remain unique across all third-party application developers, you should use randomly generated keys based on a hash of some string. In the input string, you should include enough information to make it unique.

Wednesday, December 24, 2008

Signing Your BlackBerry Application Before Deployment

Overview

  • Why the need to sign your BlackBerry code
  • Registering and obtaining signature keys
  • Signing your application

Why You Need to Sign Your Code

The concept of “controlled” API's has existed since BlackBerry 3.6 as a way for Research In Motion (RIM) to track the use of some API's for security and export control reasons. In practical terms, this means that in order to run an application on a handheld, you need to register and sign the application. Signing of applications is not required to run applications using the BlackBerry device simulator.

The BlackBerry API is divided into five groups. The first group includes all standard Java API's from MIDP and CLDC and some BlackBerry-specific API's. This group is open for all developers, and applications that use only these open API's require no signatures. The remaining four groups are all controlled API's: RIM Runtime API's, some BlackBerry API's, RIM Cryptography and Certicom Cryptography.

Registering and Obtaining Signature Keys

The registration process serves to verify the developer's identity. It involves downloading and filling out a registration form that you need to fax to RIM. There’s also a one-time processing fee associated with it. RIM will send you a set of signature keys after the registration form and fee are received.

Signing Your Application

Once you receive the signature keys from RIM, you need to install them on your development environment. The detailed instructions on how to do this can be found in the BlackBerry Java Developer Guide, Volume 2 - Advanced Topics. I recommend that you study this procedure, since installing the keys incorrectly will cause the signing process to fail.
Signing the application is very easy once the keys are installed. You need to manually start the Signature Tool from the Build menu in the JDE:

 
 


When you press the Request button, the Signature Tool submits a hash of the application to RIM's signing authority. The signing authority automatically returns the required signature, that is automatically appended to the application. The application can be loaded onto a device after this step.


Note that RIM does not receive a copy of your application, only a hash of the file(s). This allows them to determine the author of the application by matching the hash of the application against records of the hash kept by the signing authorities.

Where to Find More Information

You can find more information on this topic in the BlackBerry Java Developer Guide, Volume 2 - Advanced Topics.

Monday, December 22, 2008

Display phonenumber during incoming call

Display phonenumber during incoming call

If your application runs in background and if u want to display phonenumber during incoming call just implement this code in abstract method.
PhoneCall callInfo = Phone.getActiveCall();

if ( callInfo != null )
{
Telephone = callInfo.getDisplayPhoneNumber();
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
Status.show("incoming from: "+Telephone);
}
});

Running Existing MIDlets on the BlackBerry

To run a standard MIDlet on a Java-enabled BlackBerry device, you first need to convert the .jad and .jar files to the .cod format, using the rapc command-line tool that comes with RIM's JDE. You'll find rapc in the bin directory of your JDE installation. This command converts a MIDlet named "LoginMIDlet"

rapc import="c:\BlackBerryJDE3.6\lib\net_rim_api.jar" codename=LoginMIDlet -midlet jad=LoginMIDlet.jad LoginMIDlet.jar
You can load the resulting LoginMIDlet.cod file into your BlackBerry device from your desktop computer over a USB cable. Use the javaloader command, which can also be found in the bin directory of your JDE installation. I used this command to load LoginMIDlet.cod into my BlackBerry 7510:

javaloader -usb load LoginMIDlet.cod

Once the application is loaded into the BlackBerry, you can run it just as if it were a native application. You can use javaloader to delete applications from the BlackBerry as well as to load them. This command will remove LoginMIDlet.cod from the BlackBerry:
javaloader -usb erase -f LoginMIDlet.cod

Friday, October 31, 2008

Getting the incoming call's phone number

Getting the incoming call's phone number in Blackberry

If your application runs in background and if u want to display phone number during incoming call just implement this code in abstract method.

PhoneCall callInfo = Phone.getActiveCall();
if ( callInfo != null) {
Telephone = callInfo.getDisplayPhoneNumber();
UiApplication.getUiApplication().invokeLater(
new Runnable() {
public void run() {
Status.show("incoming from: "+Telephone);
}
}
);
}

Start-up application in Blackberry

Start-up application in Blackberry

To have an application run on startup in Blackberry, right-click the project in the BlackBerry JDE and select Properties. Click the Application tab, and check the Auto-run on Startup check box. If you want your application to run in the background, and not show up on the ribbon at all, check the System Module check box.

Tuesday, June 24, 2008

Best BlackBerry Shortcuts

Home Screen Shortcuts
Now you'll need to hit your Phone icon or click the green phone button to dial a number and place a call, but you'll have access to all of the following shortcuts from your Home Screen via a single click of the corresponding letter key:
  • WAP Browser -- W
  • Alarm -- R
  • Tasks -- T
  • Calculator -- U
  • Options -- O
  • Address Book -- A
  • Search -- S
  • Notes -- D
  • Profiles -- F
  • Help -- H
  • Lock keypad -- K
  • Calendar -- L
  • Messages -- M
  • Browser -- B
  • BlackBerry Messenger -- N
  • Saved messages -- V
  • Compose -- C

Typing Shortcuts

  • To capitalize a letter with one click, hold down the letter key.
  • To insert a period, click the Space key twice.
  • Turn CAP Lock on by pressing the ALT key followed by the right Shift key. Turn it off by pressing either Shift key.
  • Turn Number Lock on by pressing the ALT key followed by the left Shift key. Turn it off by pressing either Shift key.
  • Type an accented letter or special character by holding the corresponding letter and scrolling left or right with the trackball.
  • Insert the current date into a message or document by pressing the L key followed by the D key and Space key.
  • Insert the current time into a message or document by pressing the L key followed by the T key and Space key.

Messaging (E-mail and SMS)

  • In e-mail inbox, press the S key to search for a sender or a word within a subject line, and any mail folder regardless of message was sent or received.
  • Within inbox, access the complete list of messages sent by hitting the ALT key followed by the O key.
  • Within inbox, access the complete list of messages received by hitting the ALT key followed by the I key.
  • Within inbox, access the complete list of SMS text messages received by hitting the ALT key followed by the S key.
  • Within inbox, access phone log by hitting the ALT key followed by the P key.
  • Within inbox, access voicemail log by hitting the ALT key followed by the V key.
  • To delete all messages sent or received before a specific date, highlight that date with the cursor, hit the BlackBerry Menu key, select Delete Prior and confirm selection.
  • To enable automatic spell checking of e-mail messages, click the Options icon on BlackBerry home screen. Then click Spell Check and select the Spell Check E-Mail Before Sending option.
  • To do a manual spell check, click the BlackBerry Menu key within a composed message and select Check Spelling.
  • When a message is being spell checked, suggested fixes to unrecognized words can be ignored by clicking the escape key.

When in a list of messages, or when reading a message:

T- Top
B- Bottom
Space bar- next page
Num shift + Space bar - previous page

When in a list of messages:
N- go to Next day
P- go to Prev day

Spreadsheet Attachments:

  1. Change the size of a column by pushing the W key.
  2. Go to a specific cell by pressing the G key.
  3. View contents of a cell by pressing the Space key.
  4. Search for text by clicking the F key, and then type the desired word.
  5. Switch to a different worksheet by pressing V and selecting the desired sheet.

Presentation Attachments:

  1. Skip to the next slide by pressing the N key.
  2. Return to the previous slide by clicking the P key.
  3. Start slideshow by pushing the S key.
  4. Stop slideshow by clicking the Escape key.
  5. Switch to a new view of the slideshow by clicking the M key.

Phone Functions

  1. Multitask while on phone calls by hitting the BlackBerry menu key during a call and then selecting Home Screen. You'll then have access to e-mail and other documents--though most BlackBerrys don't allow for simultaneous voice and data transfer, so Internet access is unavailable while on calls.
  2. Find specific contacts from your BlackBerry home screen by pressing keys for first and last initials, with a space between them. If more than one contact has the same initials, scroll to the appropriate contact.

BlackBerry Browser

  1. Bring up the Enter Web Address field from any Web page by pressing the G key.
  2. Insert a period in Web address by clicking the Space key.
  3. Insert a back slash in Web address by clicking either the Left Shift or Right Shift keys and then hitting Space.
  4. Add an item to bookmarks list by clicking the A key.
  5. Bring up your bookmark list by clicking the K key.
  6. Refresh a Web page by clicking the R key.
  7. Display a list of the last 20 pages visited by hitting the I key.
  8. Open browser options with the O key.

Back to Basics: Starts and Stops

  1. To put device into Standby Mode so keys cannot be pressed while it's not in use, hold down the Mute key for a second or two. Undo Standby Mode by holding Mute for another couple of seconds.
  1. If BlackBerry slows down, starts malfunctioning or freezing, always try removing the battery and SIM card--if the device has one--and waiting a few seconds before reinserting it. Ninety-five percent of the issues Aflac BlackBerry users experience are resolved by simply removing the battery, according to Genet.