Ushasi
Ushasi

Reputation: 13

add two application class of different types in manifest

// Google Analytics class

public class MyApplication extends AppApplication {
    public static final String TAG = MyApplication.class
            .getSimpleName();

    private static MyApplication mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;

        AnalyticsTrackers.initialize(this);
        AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
    }

    public static synchronized MyApplication getInstance() {
        return mInstance;
    }

    public synchronized Tracker getGoogleAnalyticsTracker() {
        AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
        return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
    }

    /***
     * Tracking screen view
     *
     * @param screenName screen name to be displayed on GA dashboard
     */
    public void trackScreenView(String screenName) {
        Tracker t = getGoogleAnalyticsTracker();

        // Set screen name.
        t.setScreenName(screenName);

        // Send a screen view.
        t.send(new HitBuilders.ScreenViewBuilder().build());

        GoogleAnalytics.getInstance(this).dispatchLocalHits();
    }

   
    public void trackException(Exception e) {
        if (e != null) {
            Tracker t = getGoogleAnalyticsTracker();

            t.send(new HitBuilders.ExceptionBuilder()
                    .setDescription(
                            new StandardExceptionParser(this, null)
                                    .getDescription(Thread.currentThread().getName(), e))
                    .setFatal(false)
                    .build()
            );
        }
    }

    
    public void trackEvent(String category, String action, String label) {
        Tracker t = getGoogleAnalyticsTracker();

        // Build and send an Event.
        t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
    }

}
// my application class which extends MultiDexApplication 



public class AppApplication extends MultiDexApplication {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }



	@Override
	public void onCreate() {
		super.onCreate();
		
		

		
	}
	public static void checkrating(final Activity activity){
       
		 new Handler().postDelayed(new Runnable() {

				@Override
	   			public void run() {
	   				checkratingdialog(activity);
	   			}
	   		}, 10000 /*300000*/);
	}
	
	public static void checkratingdialog(Activity activity) {
		
		try {
			if(activity==null){
				Log.v("activity",   "null");
			}
			Calendar cal = Calendar.getInstance();
		    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		    String currentdate = sdf.format(cal.getTime());
		    Log.v("Current date", currentdate);
		    
			SharedPreferences sharedPreferences = activity.getSharedPreferences(
					"MY_SHARED_PREF", MODE_PRIVATE);
			String shareddate  = sharedPreferences.getString("PREVIOUS_RATING_DATE", "");
			
			Log.v("Shared Date", shareddate + "");



            if(shareddate.equals("")){
				Log.v("Shared Date",  "Shared blank");
				showWaitingnooftickitsDialog(activity);

                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putString("PREVIOUS_RATING_DATE", currentdate);
                editor.commit();


			}else{
				
				int dayes =  get_count_of_days(currentdate , shareddate); 
				Log.v("dayes",  dayes+"");
				/*int dayescheck =  get_count_of_days(currentdate , "20/05/2016"); 
				Log.v("dayescheck",  dayescheck + "");*/
				if(dayes>=30){
					showWaitingnooftickitsDialog(activity);

                    SharedPreferences.Editor editor = sharedPreferences.edit();
                    editor.putString("PREVIOUS_RATING_DATE", currentdate);
                    editor.commit();
				}
			}
			

		    
		    
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}

	static Dialog ratingdialog; 
   
}

I've an Application class which extends MultiDexApplication and another which extends application. I want to register both class name in the application tag of manifest. I searched for it and found that we can use multi-level inheritance as shown here. But how to register both class when one is plain Application class and another is MultiDexApplication class?

Upvotes: 1

Views: 597

Answers (1)

Passiondroid
Passiondroid

Reputation: 1589

You can add below method in your existing application class to support Multidex files -

protected void attachBaseContext(Context base) {
  super.attachBaseContext(base);
  MultiDex.install(this);
}

Upvotes: 1

Related Questions