package com.mariussoft.endlessjabber.sdk;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
public class EndlessJabberInterface {
/** Checks whether or not EndlessJabber is installed */
public static boolean IsInstalled(Context ctx) {
PackageManager pm = ctx.getPackageManager();
try {
pm.getPackageInfo("com.mariussoft.endlessjabber", PackageManager.GET_ACTIVITIES);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
/** Opens up GooglePlay and redirects it to the EndlessJabber app */
public static void OpenGooglePlayLink(Context ctx) {
final String appPackageName = "com.mariussoft.endlessjabber";
try {
ctx.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
ctx.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName)));
}
}
/** Launches EndlessJabber */
public static void LaunchEndlessJabber(Context ctx) {
Intent intent = ctx.getPackageManager().getLaunchIntentForPackage("com.mariussoft.endlessjabber");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent);
}
/**
* Enables integration by specifying which class to call
*
* @param context
* The context to use
* @param concreteImplementation
* The concrete implementation to call on events
* @param sendSMS
* If true, your app will be responsible for sending SMS messages
* as well as presisting them to the SMS repository
* @param sendMMS
* If true, your app will be responsible for sending & persisting
* MMS messages to the MMS repository
* @throws Exception
*/
@SuppressWarnings("rawtypes")
public static void EnableIntegration(Context context, Class concreteImplementation, boolean sendSMS, boolean sendMMS) throws Exception {
Class<?> clazz = concreteImplementation;
if (!IEndlessJabberImplementation.class.isAssignableFrom(clazz)) {
throw new Exception("Class must implement IEndlessJabberImplementation");
}
SharedPreferences.Editor editor = context.getSharedPreferences("EndlessJabberSDK", Context.MODE_PRIVATE).edit();
editor.putString("InterfaceClass", concreteImplementation.getName());
editor.putBoolean("SendSMS", sendSMS);
editor.putBoolean("SendMMS", sendMMS);
editor.apply();
SendInfoToEndlessJabber(context);
}
/** Disables integration */
@SuppressWarnings("rawtypes")
public static void DisableIntegration(Context context, Class nameOfImplementation) {
SharedPreferences.Editor editor = context.getSharedPreferences("EndlessJabberSDK", Context.MODE_PRIVATE).edit();
editor.clear();
editor.apply();
SendInfoToEndlessJabber(context);
}
/**
* Refresh integration info with EndlessJabber
*
* @param ctx
* Context to use
*/
static void SendInfoToEndlessJabber(Context context) {
String EndlessJabber_INTENT = "com.mariussoft.endlessjabber.action.extendResponse";
SharedPreferences prefs = context.getSharedPreferences("EndlessJabberSDK", Context.MODE_PRIVATE);
Intent i = new Intent();
i.setAction(EndlessJabber_INTENT);
i.putExtra("Action", "UpdateInfo");
i.putExtra("PackageName", context.getPackageName());
i.putExtra("Enabled", prefs.contains("InterfaceClass"));
if (prefs.contains("InterfaceClass")) {
i.putExtra("SendSMS", prefs.getBoolean("SendSMS", false));
i.putExtra("SendMMS", prefs.getBoolean("SendMMS", false));
}
context.sendBroadcast(i);
}
}