Some android apps may require users to have an active internet connection and may crash without one. The following implementation will allow detection of Internet connection. If an active connection does not exist, the user will be notified.
1. Create a new JAVA class named InternetCheck.java and paste the following code
package com.samples.myapp;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
public class InternetCheck extends Activity {
// flag for Internet connection status
Boolean isInternetPresent = false;
// Connection detector class
ConnectionDetector cd;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// creating connection detector class instance
cd = new ConnectionDetector(getApplicationContext());
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
// check for Internet status
if (isInternetPresent) {
// Internet Connection is Present
// make HTTP requests
showAlertDialog(InternetCheck.this, "Internet Connection",
"You have internet connection", true);
} else {
// Internet connection is not present
// Ask user to connect to Internet
showAlertDialog(InternetCheck.this, "No Internet Connection",
"You don't have internet connection.", false);
}
}
/**
* Function to display simple Alert Dialog
* @param context - application context
* @param title - alert dialog title
* @param message - alert message
* @param status - success/failure (used to set icon)
* */
public void showAlertDialog(Context context, String title, String message, Boolean status) {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
// Setting Dialog Title
alertDialog.setTitle(title);
// Setting Dialog Message
alertDialog.setMessage(message);
// Setting alert dialog icon
alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);
// Setting OK Button
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
// Showing Alert Message
alertDialog.show();
}
}
Android Examples with Code
Add great features to your Android applications. JAVA source code for Android with example tutorials!
Friday, February 22, 2013
How to allow users to rate and comment an app from within an Android application
You can allow your users to rate and comment on your app from within itself. The following implementation prompts a user to rate and comment on your android app after a specified number of days and specified number of launches. The user will see three options like "Rate and comment", "Remind later" or "No Thanks"
1. Create a new JAVA class called RatingHelper.java and paste the following code
package com.samples.myapp;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class RatingHelper {
private final static String APP_TITLE = "MY APP TITLE";
private final static String APP_PNAME = "com.samples.myapp";
private final static int DAYS_UNTIL_PROMPT = 1;
private final static int LAUNCHES_UNTIL_PROMPT = 5;
public static void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);
if (prefs.getBoolean("dontshowagain", false)) { return ; }
SharedPreferences.Editor editor = prefs.edit();
// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);
// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}
// Wait at least n days before opening
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
showRateDialog(mContext, editor);
}
}
editor.commit();
}
public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Rate " + APP_TITLE);
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(mContext);
tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
tv.setWidth(240);
tv.setPadding(4, 0, 4, 10);
ll.addView(tv);
Button b1 = new Button(mContext);
b1.setText("Rate " + APP_TITLE);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
ll.addView(b2);
Button b3 = new Button(mContext);
b3.setText("No, thanks");
b3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b3);
dialog.setContentView(ll);
dialog.show();
}
}
2. Change the values of DAYS_UNTIL_PROMPT and LAUNCHES_UNTIL_PROMPT based on your app
3. Add the following line to invoke RatingHelper class from your other android activity class
RatingHelper.app_launched(this);
4. Add the following line in Android manifest file
<activity android:name=".WebViewer">
</activity>
1. Create a new JAVA class called RatingHelper.java and paste the following code
package com.samples.myapp;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class RatingHelper {
private final static String APP_TITLE = "MY APP TITLE";
private final static String APP_PNAME = "com.samples.myapp";
private final static int DAYS_UNTIL_PROMPT = 1;
private final static int LAUNCHES_UNTIL_PROMPT = 5;
public static void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);
if (prefs.getBoolean("dontshowagain", false)) { return ; }
SharedPreferences.Editor editor = prefs.edit();
// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);
// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}
// Wait at least n days before opening
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
showRateDialog(mContext, editor);
}
}
editor.commit();
}
public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Rate " + APP_TITLE);
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(mContext);
tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
tv.setWidth(240);
tv.setPadding(4, 0, 4, 10);
ll.addView(tv);
Button b1 = new Button(mContext);
b1.setText("Rate " + APP_TITLE);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
ll.addView(b2);
Button b3 = new Button(mContext);
b3.setText("No, thanks");
b3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b3);
dialog.setContentView(ll);
dialog.show();
}
}
2. Change the values of DAYS_UNTIL_PROMPT and LAUNCHES_UNTIL_PROMPT based on your app
3. Add the following line to invoke RatingHelper class from your other android activity class
RatingHelper.app_launched(this);
4. Add the following line in Android manifest file
<activity android:name=".WebViewer">
</activity>
Wednesday, February 20, 2013
How to display webpage from website on Android using WebView class
Android WebView class allows viewing a specified website URL from within an Android app without opening a web browser.
1. Create a new JAVA class called WebViewer.java and paste the following code
package com.samples.webexample;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewer extends DashboardActivity
{
private WebView webView;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create reference to UI elements
webView = (WebView) findViewById(R.id.webview_compontent);
// workaround so that the default browser doesn't take over
webView.setWebViewClient(new MyWebViewClient());
// Setup click listener
openURL();
}
/** Opens the URL in a browser */
private void openURL() {
webView.loadUrl("http://www.mywebsite.com/about.html");
webView.requestFocus();
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/webview_compontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0" />
</LinearLayout>
3. Add the following line to your Android manifest file if you are calling this activity from another activity
<activity android:name=".WebViewer">
</activity>
1. Create a new JAVA class called WebViewer.java and paste the following code
package com.samples.webexample;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewer extends DashboardActivity
{
private WebView webView;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create reference to UI elements
webView = (WebView) findViewById(R.id.webview_compontent);
// workaround so that the default browser doesn't take over
webView.setWebViewClient(new MyWebViewClient());
// Setup click listener
openURL();
}
/** Opens the URL in a browser */
private void openURL() {
webView.loadUrl("http://www.mywebsite.com/about.html");
webView.requestFocus();
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/webview_compontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0" />
</LinearLayout>
3. Add the following line to your Android manifest file if you are calling this activity from another activity
<activity android:name=".WebViewer">
</activity>
How to play a streaming video using VideoView class in Android
1. Create a new class called VideoDisplay.java and paste the following code
package com.samples.video
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoDisplay extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
String mp4path = http://www.mywebsite.com/myVideo.mp4;
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
VideoView videoView =(VideoView)findViewById(R.id.videoView);
videoView.setVideoPath(mp4Path);
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<VideoView android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
3. Add the following lines in AndroidManifest.xml file
<activity android:name=".VideoDisplay">
</activity>
4. If you see a message saying "Sorry, this video cannot be played", try changing the name of your video file by excluding any white spaces. It looks like lower Android OS versions cannot play video files containing white spaces in their file name. For example, change "My Video.mp4" to "MyVideo.mp4"
package com.samples.video
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
{
@Override
public void onCreate(Bundle savedInstanceState)
{
String mp4path = http://www.mywebsite.com/myVideo.mp4;
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
VideoView videoView =(VideoView)findViewById(R.id.videoView);
videoView.setVideoPath(mp4Path);
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<VideoView android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
3. Add the following lines in AndroidManifest.xml file
<activity android:name=".VideoDisplay">
</activity>
4. If you see a message saying "Sorry, this video cannot be played", try changing the name of your video file by excluding any white spaces. It looks like lower Android OS versions cannot play video files containing white spaces in their file name. For example, change "My Video.mp4" to "MyVideo.mp4"
Subscribe to:
Posts (Atom)