Tuesday, September 8, 2015

Problems in Hosting Asp.Net 3.5 Arabic website Oracle DB and Crystal Report in IIS 7 Windows Server 2012 R2 Machine

In this post I want to share my experiences during the environment setup: We have a very old application developed back in 2012 , this application was deployed in windows server 2003 machine ,suddenly machine crash this month and client request us to deploy same application in Windows Server 2012 R2 Machine, in two days I have successfully deployed our application. Below are some issues that I have face, may be it will be helpful for someone or for me in future :) 1) I have installed Oracle 10g client an it runs smoothly , then I deployed Asp.net web application , when I run the app Arabic text was nor showing properly after some hour of R & D I found the solution I have change the systems from control panel > Region and Language >Administrative Tab 2) After this Restart the application and now Arabic character comes properly :) 3)Now Crystal report was not working properly because I forgot to put TNS Name in Oracle Client directory ,after TNS name file reports also work fine 4) But Crystal report is not print out from print button neither it export in PDF I am still looking for the solution :) 5)Another issue some of my request contain arabic characters that was setting values in database as ?????? .The work around was simple 6)I have put NS_LAND in my environment variable AMERICAN_AMERICA.WE8MSWIN1256. and restart my machine . 7)Now request strings are showing correct arabic text . Now every thing is working fine :)

Wednesday, May 27, 2015

Add Image in Navigation Drawer Android Studio Template

I have to add Image in one of my project in slider Menu ,
I have used Android Studio Template Navigation Drawer  for material design .
For adding header on top of the list I have modified few lines in code: below are the simple steps:

Create an Android Studio project and select  Navigation Drawer Activity as shown below
Now your project structure is like this:

Now open activity_main.xml  and add LinearLayout and image view as shown below highlighted lines

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"    android:layout_width="match_parent" android:layout_height="match_parent"
 <FrameLayout android:id="@+id/container" android:layout_width="match_parent"

    android:layout_height="match_parent" />

<LinearLayout    android:layout_width="@dimen/navigation_drawer_width"    android:layout_height="match_parent"    android:orientation="vertical"    android:layout_gravity="start"    android:id="@+id/slider_list_with_image"    >

<ImageView    android:layout_width="match_parent"    android:layout_height="wrap_content"

<fragment android:id="@+id/navigation_drawer"    android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"    android:layout_gravity="start"    android:name="com.naushad.navigationdrawersliderimage.NavigationDrawerFragment"    tools:layout="@layout/fragment_navigation_drawer" />



Now open NavigationDrawerFragment.java and modify highlighted lines
public class NavigationDrawerFragment extends Fragment {

private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";

private NavigationDrawerCallbacks mCallbacks;

private ActionBarDrawerToggle mDrawerToggle;

    private DrawerLayout mDrawerLayout;
    private ListView mDrawerListView;
    //private View mFragmentContainerView;
   //Replace it whereever it used in this class with linear layout    

    private LinearLayout mlinearLayout;

    private int mCurrentSelectedPosition = 0;
    private boolean mFromSavedInstanceState;
    private boolean mUserLearnedDrawer;

    public NavigationDrawerFragment() {

    public void onCreate(Bundle savedInstanceState) {
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
        mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);

        if (savedInstanceState != null) {
            mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
            mFromSavedInstanceState = true;

        // Select either the default item (0) or the last selected item.        

     public void onActivityCreated(Bundle savedInstanceState) {

     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        mDrawerListView = (ListView) inflater.inflate(
                R.layout.fragment_navigation_drawer, container, false);
        mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView parent, View view, int position, long id) {
        mDrawerListView.setAdapter(new ArrayAdapter(
                new String[]{
        mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
        return mDrawerListView;

    public boolean isDrawerOpen() {
   return mDrawerLayout != null && 
     //*** MODIFIED by Naushad        

    public void setUp(int fragmentId, DrawerLayout drawerLayout) {
        //mFragmentContainerView = getActivity().findViewById(fragmentId);
        //*** MODIFIED by Naushad        
        mDrawerLayout = drawerLayout;
       // set a custom shadow that overlays the main content when the drawer opens                  

      mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
        // set up the drawer's list view with items and click listener
        ActionBar actionBar = getActionBar();

          mDrawerToggle = new ActionBarDrawerToggle(
                R.string.navigation_drawer_close) {
             public void onDrawerClosed(View drawerView) {
                if (!isAdded()) {

               // calls onPrepareOptionsMenu()            

             public void onDrawerOpened(View drawerView) {
                if (!isAdded()) {

                if (!mUserLearnedDrawer) {
                    mUserLearnedDrawer = true;
                    SharedPreferences sp = PreferenceManager
                    sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();

               // calls onPrepareOptionsMenu()            
        if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
           //***MODIFIED by Naushad                     

           mDrawerLayout.post(new Runnable() {
            public void run() {


    private void selectItem(int position) {
        mCurrentSelectedPosition = position;
        if (mDrawerListView != null) {
            mDrawerListView.setItemChecked(position, true);
        if (mDrawerLayout != null) {
           // mDrawerLayout.closeDrawer(mFragmentContainerView);  
           //*** MODIFIED by Naushad               
        if (mCallbacks != null) {

    public void onAttach(Activity activity) {
        try {
            mCallbacks = (NavigationDrawerCallbacks) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");

    @Override    public void onDetach() {
        mCallbacks = null;

    @Override    public void onSaveInstanceState(Bundle outState) {
        outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);

    @Override    public void onConfigurationChanged(Configuration newConfig) {
        // Forward the new configuration the drawer toggle component.        

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     if (mDrawerLayout != null && isDrawerOpen()) {
            inflater.inflate(R.menu.global, menu);
        super.onCreateOptionsMenu(menu, inflater);

    @Override    public boolean onOptionsItemSelected(MenuItem item) {
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;

        if (item.getItemId() == R.id.action_example) {
            Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show();
            return true;

        return super.onOptionsItemSelected(item);

     private void showGlobalContextActionBar() {
        ActionBar actionBar = getActionBar();

    private ActionBar getActionBar() {
        return ((ActionBarActivity) getActivity()).getSupportActionBar();

   public static interface NavigationDrawerCallbacks {
            void onNavigationDrawerItemSelected(int position);

Thats it here is the output :) make sure you have image in drawable folder You can get the source code from github here is the link

Thursday, May 14, 2015

[Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.] Error: /Users/Naushad/IonicProjects/IonicApp/platforms/android/cordova/build: Command failed with exit code 2 at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23) at ChildProcess.emit (events.js:98:17) at maybeClose (child_process.js:766:16) at Process.ChildProcess._handle.onexit (child_process.js:833:5)

sudo ionic build android

[Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.]
Error: /Users/Naushad/IonicProjects/IonicApp/platforms/android/cordova/build: Command failed with exit code 2
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:766:16)
    at Process.ChildProcess._handle.onexit (child_process.js:833:5)

to solve this i use following steps in terminal :

sudo chown -R Naushad /usr/local/lib/node_modules/cordova

still have same error than i do follwing step

export PATH=$PATH:/users/Naushad/android-sdks/tools
 then i got below error  :)
[Error: Please install Android target: "android-22".

Hint: Open the SDK manager by running: /users/Naushad/android-sdks/tools/android
You will require:
1. "SDK Platform" for android-22
2. "Android SDK Platform-tools (latest)
3. "Android SDK Build-tools" (latest)]
Error: /Users/Naushad/IonicProjects/IonicApp/platforms/android/cordova/build: Command failed with exit code 2
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:766:16)
    at Process.ChildProcess._handle.onexit (child_process.js:833:5)

then  I goto my Android sdk manager and update my android-22 and bam!! its work :)
Now I can build my ionic app for android :)

:processDebugJavaRes UP-TO-DATE


In short you need these two commands

sudo chown -R Naushad /usr/local/lib/node_modules/cordova

export PATH=$PATH:/users/Naushad/android-sdks/tools

and then update your android if it is not updated to latest version :)
hope this will help some one.