Soon, I Will Update this blog with Source Code..............
Wednesday, 27 February 2013
Wednesday, February 27, 2013
Sunday, 17 February 2013
Sunday, February 17, 2013
Android Dropbox Integration
Hello Droid Guys,
Today, I am going to provide you a full tutorial of dropbox integration into your
android application with source code. Using this you can easily :
1. upload your image in your dropbox.
2. upload your text file and document into your dropbox.
3. upload your audio and video file into your dropbox.
Also , List or fetch all your dropbox file, folder and images by your android application.
Step 1: Create an app and get the API KEY and SECRET KEY:
a) Open this link https://www.dropbox.com/developers and logged in with your
dropbox credential.
Today, I am going to provide you a full tutorial of dropbox integration into your
android application with source code. Using this you can easily :
1. upload your image in your dropbox.
2. upload your text file and document into your dropbox.
3. upload your audio and video file into your dropbox.
Also , List or fetch all your dropbox file, folder and images by your android application.
Step 1: Create an app and get the API KEY and SECRET KEY:
a) Open this link https://www.dropbox.com/developers and logged in with your
dropbox credential.
b) After Logged in , the next page ask you for create an app
C) Insert the app name and description and provide the access as full dropbox by
selecting the second option.
d) Note your app key and secret key
Step 2) Download the android Sdk for dropbox form HERE
Now all Done , import the project into your android eclipse and please remember to
change secret key and App key with your own key.
Hope this will helps you.
Enjoy Coding :)
Saturday, 16 February 2013
Saturday, February 16, 2013
android.os.NetworkOnMainThreadException in android
Mukesh Kumar
android Strict mode
,
network call in Main UI Thread
,
network call on main thread
,
NetworkOnMainThreadException
7
comments
Hello Droid Guys,
Yesterday , I found a strange issue, my application is running fine on most of
the android devices. But when I run the same application on Samsung S-3, S2,
Samsung Galaxy Duos it will be crashed and give me the error
"android.os.NetworkOnMainThreadException".
In my application basically I am showing a alert dialog with an logout button and on click of logout
button I am calling the service. This functionality is not working on above few device
and crashes every time on clickinng the logout button .
After spending a lot of time on it I came to know that on device api version below 9 we
can call or write network call in Main UI Thread but above api version 9 it gives error
android.os.NetworkOnMainThreadException. This is happening my case.
There are Two way to fix this Issue:
1.Instead of writing network call in Main UI Thread use Async Task.
2.Add below code into your activity class inside onCreate() method just after the
setContentView(R.layout.activity_main).
if( Build.VERSION.SDK_INT >= 9){
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Hoping , this will helps you.
Enjoy Coding :)
Yesterday , I found a strange issue, my application is running fine on most of
the android devices. But when I run the same application on Samsung S-3, S2,
Samsung Galaxy Duos it will be crashed and give me the error
"android.os.NetworkOnMainThreadException".
Caused by: android.os.NetworkOnMainThreadException
10-30 15:07:35.341: E/AndroidRuntime(732): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
In my application basically I am showing a alert dialog with an logout button and on click of logout
button I am calling the service. This functionality is not working on above few device
and crashes every time on clickinng the logout button .
After spending a lot of time on it I came to know that on device api version below 9 we
can call or write network call in Main UI Thread but above api version 9 it gives error
android.os.NetworkOnMainThreadException. This is happening my case.
There are Two way to fix this Issue:
1.Instead of writing network call in Main UI Thread use Async Task.
2.Add below code into your activity class inside onCreate() method just after the
setContentView(R.layout.activity_main).
if( Build.VERSION.SDK_INT >= 9){
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Hoping , this will helps you.
Enjoy Coding :)
Sunday, 20 January 2013
Sunday, January 20, 2013
Android animation
Hello Droid Guys,
In my previous article or blog , i had explain how to show shake animation
in android. Now , in this blog I am covering the other animation.
like:
1, left to right animation in android
2. right to left animation in android
3. fade out animation in android
4. zoom in animation in android
5. slide up animation in android
6. slide down animation in andriod
<translate xmlns:android="http://schemas.android.com/apk/res/android"In my previous article or blog , i had explain how to show shake animation
in android. Now , in this blog I am covering the other animation.
like:
1, left to right animation in android
2. right to left animation in android
3. fade out animation in android
4. zoom in animation in android
5. slide up animation in android
6. slide down animation in andriod
1.res/anim/slideoutleft.xml
<?xml version="1.0" encoding="utf-8"?>
android:duration="@integer/fastAnim"
android:fromXDelta="0"
android:interpolator="@android:anim/overshoot_interpolator"
android:toXDelta="-100%p" />
2. res/anim/slideinright.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@integer/fastAnim"
android:fromXDelta="100%p"
android:interpolator="@android:anim/overshoot_interpolator"
android:toXDelta="0" />
3.res/anim/fadeout.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@integer/fastAnim"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
Another link
1. Shake animation in android
1. Shake animation in android
Sunday, January 20, 2013
Android Shake animation
Mukesh Kumar
fade in and fade out animation in android
,
left to right animation in android
,
right to left animation in android
,
slide down animation in andriod
,
slide up animation in android
1 comment
Hello Droid Friends,
This is my another android blog in which I am going to explain the Animation
effect(shake Animation ) in android. When you fill wrong input then instead of
showing the toast messege you can also shake the view.
Steps :
1. Create a project with name "Shake animation" and package name
"com.mukesh.shakeanimation".
2. add an "anim" folder inside the res folder.see the image below.
Source Code:
1. Activity Class:
2) activity_main.xml
4. res/anim/cycle_7.xml
May this will helps someone.
Enjoy coding :)
Following link also helps you :
1. left to right animation in android
2. right to left animation in android
3. fade out animation in android
4. zoom in animation in android
5. slide up animation in android
6. slide down animation in andriod
This is my another android blog in which I am going to explain the Animation
effect(shake Animation ) in android. When you fill wrong input then instead of
showing the toast messege you can also shake the view.
Steps :
1. Create a project with name "Shake animation" and package name
"com.mukesh.shakeanimation".
2. add an "anim" folder inside the res folder.see the image below.
Source Code:
1. Activity Class:
package com.mukesh.shakeanimation;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View loginButton = findViewById(R.id.login);
loginButton.setOnClickListener(this);
}
public void onClick(View v) {
Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
findViewById(R.id.pw).startAnimation(shake);
Toast.makeText(this, "Wrong Password", Toast.LENGTH_SHORT).show();
}
}
2) activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue_gradient"
android:orientation="vertical"
android:padding="10dip" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:text="Please enter your password:"
android:textColor="@android:color/white"
android:textStyle="bold" />
<EditText
android:id="@+id/pw"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:password="true"
android:singleLine="true" />
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_active_pressed"
android:padding="5dp"
android:text="Login"
android:textColor="@android:color/white"
android:textStyle="bold" />
</LinearLayout>
3. res/anim/shake.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:interpolator="@anim/cycle_7"
android:toXDelta="10" />
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="7" />
May this will helps someone.
Enjoy coding :)
Following link also helps you :
1. left to right animation in android
2. right to left animation in android
3. fade out animation in android
4. zoom in animation in android
5. slide up animation in android
6. slide down animation in andriod
Sunday, 23 December 2012
Sunday, December 23, 2012
Open a new Activity on Receiving the notification in Android
Mukesh Kumar
Google Cloud messageing
,
launch activity + push notification
,
launch activity when push come in android
,
Push notification
6
comments
Hello Droid Guys,
In this tutorial , I am going to explain how to open a new activity class
whenever a push notification comes on your device.
Step 1. For this first of all follow Android Goggle Cloud Messaging .
In this blog I already explain how to register your application for GCM,
Obtaining the sender id and getting the registration id from GCM server.
step 2. Once you complete the step-1 then inside your GCMIntentService.java class add
following code.
In this tutorial , I am going to explain how to open a new activity class
whenever a push notification comes on your device.
Step 1. For this first of all follow Android Goggle Cloud Messaging .
In this blog I already explain how to register your application for GCM,
Obtaining the sender id and getting the registration id from GCM server.
step 2. Once you complete the step-1 then inside your GCMIntentService.java class add
following code.
@Override
protected void onMessage(Context context, Intent arg1) {
Log.i(TAG, "new message= ");
String message = "success on server";
// displayMessage(context, message);
// notifies user
generateNotification(context, message);
}
Now,
/**
* Issues a notification to inform the user that server has sent a message.
*/
private static void generateNotification(Context context, String message) {
int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
Intent notificationIntent = new Intent(context, Messenger.class);
notificationIntent.putExtra("MESSAGE",message);
notificationIntent.putExtra("ISNOTIFICATION",true);
// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intent =
PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, title, message, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, notification);
}
This , will helps you to open a new class whenever apush notification comes.
On tapping the Notification from notification bar.
Enjoy Coding... :)
Cheers :)
Also see this link for help
1. Google Cloud Messaging
Sunday, December 23, 2012
Android Goggle Cloud Messaging | GCM | Android push notification
Hello Droid Guys,
This tutorial helps you to implement “Google Cloud Messaging for Android (GCM)" and
sending "Android Push Notification" using GCM.
According to Google, “Google Cloud Messaging for Android (GCM)" is a service which
helps developer in sending data from server to there "Android Application" whenever
there is new data added on server. Also , No need to request server after every time
period(the timely fashion which we mostly did to fetch updated data from server after a
fixed time period for e,g after every 6hrs,or a day).
1. How it works ?
1. Android device sends a "sender id" and "application id" to GCM server for
registration.
2. After Successfully registration on server, the GCM server generate a
"Registration id" and returns it.
3. After receiving this "registration id" the device send this "registration id "
to our server (i.e. my mysql server).
4. Our server store this "registration id" into database for later usage.
Registering Your Application for “Google Cloud Messaging for Android (GCM)":
Step-1. Goto Here and create a new project. (If you haven’t created already
otherwise it will take you to dashboard).
Step-2. Click on create project and check your browser url, It will change some thing
like:
" https://code.google.com/apis/console/#project:4815162342 "
Note: This Id will be used by the Android Device while Registering for Push Notification.
Step-3. Choose Service tab from the left side menu on the web page. and turn on
“ Google Cloud Messaging for Android “
Server key and note down the generated key.
Creating Andrid application for GCM:
Note: Before starting to create android application , first update your ADT plugin to 20.
1. Go to window => android Sdk => extras=> choose Google Cloud Messaging for Android Library.
Now Start Creating Android application project and remember to add gcm .jar inside your project lib folder.
You can easily find this gcm.jar inside your android_sdk/extras/google/gcm after updating your ADT and
SDk.
Now place following file inside your project
1.PushAndroidActivity.java
package com.mukesh.gcm;
import static com.mukesh.gcm.CommonUtilities.SENDER_ID;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.google.android.gcm.GCMRegistrar;
public class PushAndroidActivity extends Activity {
private String TAG = "** pushAndroidActivity **";
private TextView mDisplay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkNotNull(SENDER_ID, "SENDER_ID");
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
setContentView(R.layout.main);
mDisplay = (TextView) findViewById(R.id.display);
final String regId = GCMRegistrar.getRegistrationId(this);
Log.i(TAG, "registration id ===== " + regId);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}
mDisplay.setText("ffffff " + regId);
}
private void checkNotNull(Object reference, String name) {
if (reference == null) {
throw new NullPointerException(getString(R.string.error_config,
name));
}
}
@Override
protected void onPause() {
super.onPause();
GCMRegistrar.unregister(this);
}
}
2.GCMIntentService.java
package com.mukesh.gcm;
import static com.mukesh.gcm.CommonUtilities.SENDER_ID;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.google.android.gcm.GCMBaseIntentService;
public class GCMIntentService extends GCMBaseIntentService {
public GCMIntentService() {
super(SENDER_ID);
}
private static final String TAG = "===GCMIntentService===";
@Override
protected void onRegistered(Context arg0, String registrationId) {
Log.i(TAG, "Device registered: regId = " + registrationId);
}
@Override
protected void onUnregistered(Context arg0, String arg1) {
Log.i(TAG, "unregistered = " + arg1);
}
@Override
protected void onMessage(Context arg0, Intent arg1) {
Log.i(TAG, "new message= ");
}
@Override
protected void onError(Context arg0, String errorId) {
Log.i(TAG, "Received error: " + errorId);
}
@Override
protected boolean onRecoverableError(Context context, String errorId) {
return super.onRecoverableError(context, errorId);
}
}
3. CommonUtilities.java
package com.mukesh.gcm;
public final class CommonUtilities {
static final String SENDER_ID = "4815162342";
}
4. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mukesh.gcm" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
<permission android:name="com.mukesh.gcma.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.mukesh.gcm.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity android:name=".PushAndroidActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.mukesh.gcm" />
</intent-filter>
</receiver>
<service android:name=".GCMIntentService" />
</application>
</manifest>
Enjoy Coding... :)
Cheers :)
Also see this blog for more help:
1. Open| Launch Activity on receiving Push Notification
Sunday, December 23, 2012
Android toggle button
Mukesh Kumar
custom toggle button
,
custom toggle button in android
,
toggle button
,
toggle switch button
10
comments
Hello Droid Guys,
Today ,I am sharing the code of custom toggle button in android. How to make a toggle switch button like
iPhone.
1. Create a new project in Eclipse File New ⇒ Android ⇒ Application Project and fill the required details.
2. Create required files needed to show a toggle switch button. I am using my default activity_main.xml as where I place the toggle button code and created a new xml file inside
drawable in which I change my toggle button on selection.
1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp" >
<ToggleButton
android:id="@+id/toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btntoggle_selector"
android:textColor="@android:color/transparent"
android:textOff="Off"
android:textOn="On" />
</LinearLayout>
2.btntoggle_selector
1: <?xml version="1.0" encoding="utf-8"?>
2: <selector xmlns:android="http://schemas.android.com/apk/res/android">
3: <item android:drawable="@drawable/on" android:state_checked="true" android:state_pressed="true"/>
4: <item android:drawable="@drawable/on" android:state_checked="true" android:state_focused="false"/>
5: <item android:drawable="@drawable/off" android:state_checked="false" android:state_pressed="true"/>
6: <item android:drawable="@drawable/off" android:state_checked="false" android:state_focused="false"/>
7: </selector>
3.CustomToggleButtonActivity1: package com.mukesh.customtogglebutton;
2: import android.app.Activity;
3: import android.os.Bundle;
4: import android.view.View;
5: import android.view.View.OnClickListener;
6: import android.widget.Toast;
7: import android.widget.ToggleButton;
8: import com.technotalkative.customtogglebutton.R;
9: public class CustomToggleButtonActivity extends Activity {
10: ToggleButton toggleBtn;
11: /** Called when the activity is first created. */
12: @Override
13: public void onCreate(Bundle savedInstanceState) {
14: super.onCreate(savedInstanceState);
15: setContentView(R.layout.main);
16: toggleBtn = (ToggleButton) findViewById(R.id.toggle);
17: toggleBtn.setOnClickListener(new OnClickListener() {
18: public void onClick(View v) {
19: String state = toggleBtn.getText().toString();
20: Toast.makeText(CustomToggleButtonActivity.this,
21: "Toggle State :" + state, Toast.LENGTH_LONG).show();
22: }
23: });
24: }
25: }
You can use default android switches :
Enjoy coding ... :)
Friday, 14 December 2012
Friday, December 14, 2012
Photo capture Intent causes NullPointerException on Samsung phones only
Mukesh Kumar
Android Capture Image from Camera causes NullPointerException on Samsung phones
,
Null Intent passed back On Samsung Galaxy Tab
22
comments
Hello Dorid Guys,
Yesterday, I came across a weird situation . In my application ,I am capturing an image from camera and displaying it inside an imageview. I tested its functionality on many of android device and its working
fine except "Samsung Galaxy Tab".
In Samsung device the capture intent will be "Null" and I am getting null pointer exception while capturing image from camera in android Samsung S2.
Following code I am using which running fine in all devices except Samsung :
For capturing Image from camera:
Intent gallaryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(gallaryIntent, RESULT_LOAD_IMAGE);
And finally the onActivityResult(int requestCode, int resultCode, Intent data) :
Now the crop image method, picking the image from gallery or camera and crop it.
The above code is working fine in most of the devices but when test it on Samsung S2 . I am getting the NullPointerException.
This is very tough time for me because my client wants to release the Application ASAP. And because of this issue he is delaying its time.
After spending a full day and a night a found the fix for this problem, I added some extra code inside the
onActivityResult method.
The trick is:
Enjoy Coding :)
Yesterday, I came across a weird situation . In my application ,I am capturing an image from camera and displaying it inside an imageview. I tested its functionality on many of android device and its working
fine except "Samsung Galaxy Tab".
In Samsung device the capture intent will be "Null" and I am getting null pointer exception while capturing image from camera in android Samsung S2.
Following code I am using which running fine in all devices except Samsung :
For capturing Image from camera:
Intent captureIntent =
new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(captureIntent,
CAMERA_CAPTURE);
For choosing an image from
gallery:
Intent gallaryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(gallaryIntent, RESULT_LOAD_IMAGE);
And finally the onActivityResult(int requestCode, int resultCode, Intent data) :
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == RESULT_LOAD_IMAGE) {
picUri = data.getData();
performCrop();
}
if (requestCode == CAMERA_CAPTURE) {
// get the Uri for the captured image
picUri = data.getData();
if (picUri != null) {
performCrop();
}
}
// user is returning from cropping the image
if (requestCode == PIC_CROP) {
// get the returned data
Bundle extras = data.getExtras();
// get the cropped bitmap
rectangleBitmap = extras.getParcelable("data");
// retrieve a reference to the ImageView
GraphicsUtil graphicsUtil = new GraphicsUtil();
rectangleBitmap = graphicsUtil.getRoundedCornerBitmap(
rectangleBitmap, 16);
ImageView picView = (ImageView) findViewById(R.id.imgView);
// display the returned cropped image
picView.setImageBitmap(rectangleBitmap);
btnMakeMotekon.setBackgroundDrawable(getResources()
.getDrawable(R.drawable.make));
btnMakeMotekon.setEnabled(true);
btnNext.setEnabled(true);
}
}
}
Now the crop image method, picking the image from gallery or camera and crop it.
private void performCrop() {
// take care of exceptions
try {
// call the standard crop action intent (the user device may not support it)
Intent cropIntent = new Intent("com.android.camera.action.CROP");
// indicate image type and Uri
cropIntent.setDataAndType(picUri, "image/*");
// set crop properties
cropIntent.putExtra("crop", "true");
// indicate aspect of desired crop
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
// indicate output X and Y
cropIntent.putExtra("outputX", 256);
cropIntent.putExtra("outputY", 256);
// retrieve data on return
cropIntent.putExtra("return-data", true);
// start the activity - we handle returning in onActivityResult
startActivityForResult(cropIntent, PIC_CROP);
}catch (ActivityNotFoundException anfe) {
// display an error message
String errorMessage = "Whoops - your device doesn't support the
crop action!";
Toast toast = Toast.makeText(this, errorMessage,
Toast.LENGTH_SHORT);
toast.show();
}
}
The above code is working fine in most of the devices but when test it on Samsung S2 . I am getting the NullPointerException.
This is very tough time for me because my client wants to release the Application ASAP. And because of this issue he is delaying its time.
After spending a full day and a night a found the fix for this problem, I added some extra code inside the
onActivityResult method.
The trick is:
if(picUri != null) {
// do it the normal way
else {
// do it the "Samsung" way
}
And it works :)
Here is my source code:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == RESULT_LOAD_IMAGE) {
picUri = data.getData();
performCrop();
}
if (requestCode == CAMERA_CAPTURE) {
// get the Uri for the captured image
picUri = data.getData();
/*
* In samsung , the picUri will be null and application will
* give runtime error In else part we are doing the code for
* samsung device
*/
if (picUri != null) {
// do it the normal way
performCrop();
} else {
// Describe the columns you'd like to have returned.
// Selecting from the Thumbnails location gives you both the
// Thumbnail Image ID, as well as the original image ID
String[] projection = {
MediaStore.Images.Thumbnails._ID, // The columns we wANT
MediaStore.Images.Thumbnails.IMAGE_ID,
MediaStore.Images.Thumbnails.KIND,
MediaStore.Images.Thumbnails.DATA };
String selection = MediaStore.Images.Thumbnails.KIND + "=" + // Select
// only // mini's
MediaStore.Images.Thumbnails.MINI_KIND;
String sort = MediaStore.Images.Thumbnails._ID + " DESC";
// At the moment, this is a bit of a hack, as I'm returning
// ALL images, and just taking the latest one. There is a
// better way to narrow this down I think with a WHERE
// clause which is currently the selection variable
Cursor myCursor = this.managedQuery(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
projection, selection, null, sort);
long imageId = 0l;
long thumbnailImageId = 0l;
String thumbnailPath = "";
try {
myCursor.moveToFirst();
imageId = myCursor.getLong(myCursor .getColumnIndexOrThrow(MediaStore.Images.Thumbnails.IMAGE_ID));
thumbnailImageId = myCursor.getLong(myCursor .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID));
thumbnailPath = myCursor
.getString(myCursor .getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA));
} finally {
myCursor.close();
}
// Create new Cursor to obtain the file Path for the large
// image
String[] largeFileProjection = {
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.DATA };
String largeFileSort = MediaStore.Images.ImageColumns._ID
+ " DESC";
myCursor = this.managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
largeFileProjection, null, null, largeFileSort);
String largeImagePath = "";
try {
myCursor.moveToFirst();
// This will actually give yo uthe file path location of
// the image.
largeImagePath = myCursor
.getString(myCursor
.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA));
} finally {
myCursor.close();
}
// These are the two URI's you'll be interested in. They
// give you a handle to the actual images
Uri uriLargeImage = Uri.withAppendedPath(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
String.valueOf(imageId));
Uri uriThumbnailImage = Uri.withAppendedPath(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
String.valueOf(thumbnailImageId));
picUri = uriLargeImage;
performCrop();
}
}
}
Hope this will helps Some one.Enjoy Coding :)
Thursday, 6 December 2012
Thursday, December 06, 2012
Close Popup window on click of backbuttun in android
Mukesh Kumar
close popup window in android
,
Dismiss popup window on back pressed in android
,
dismiss popup window.
3
comments
Hello Dorid Guys,
Yesterday, I stuck in a weird situation , the android popup button will not closed on pressing back
button . On android physical back button pressed I am calling popupWindow.dismiss();
But it not works for me :( .
After spending 1-2 hrs on it , finally I Solved this issue.
I am Doing following three steps :
1. Initializing the popup window first:
View view = LayoutInflater.from(MyDialogActivity.this).inflate(R.layout.poup_icon, null);
popupWindow = new PopupWindow(view, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, true);
2. After initialization call this
popupWindow.setBackgroundDrawable(new BitmapDrawable());
3. Finally, at the end inside your back button pressed code call this
@Override
public void onBackPressed() {
if(popupWindow != null)
popupWindow.dismiss();
else
super.onBackPressed();
}
Here is my full source code:
package com.popup.activities;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.PopupWindow;
public class MyDialogActivity extends Activity {
Context mContext = MyDialogActivity.this;
PopupWindow popupWindow;
ImageView emojiIcon;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_dialog);
ImageView emojiIcon = (ImageView) findViewById(R.id.motekon_icon);
//onclick of icom
emojiIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View view = LayoutInflater.from(mContext).inflate(R.layout.popup_ icon, null);
popupWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
final GridView gridView = (GridView)view.
findViewById(R.id.gridView1);
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v,
int position, long arg3) {
popupWindow.dismiss();
}
});
gridView.setAdapter(your adapter);
}
});
}
@Override
protected void onPause() {
super.onPause();
if (popupWindow != null)
popupWindow.dismiss();
}
@Override
public void onBackPressed() {
if (popupWindow != null)
popupWindow.dismiss();
else
super.onBackPressed();
}
}
This is what I am doing in my code and it solve my problem.
May this will help some one.
Enjoy Coding :)
Subscribe to:
Posts
(
Atom
)