forked from organicmaps/organicmaps
Added application launch on ad click instead of browser(if its installed).
This commit is contained in:
parent
6e38a480ed
commit
912ec8a52c
5 changed files with 40 additions and 7 deletions
|
@ -40,6 +40,7 @@ public class AdsManager
|
|||
private static final String COLOR_KEY = "Color";
|
||||
private static final String WEB_URL_KEY = "WebURLs";
|
||||
private static final String CACHE_FILE = "menu_ads.json";
|
||||
private static final String ID_APP_PACKAGE = "AppPackage";
|
||||
|
||||
private static List<MenuAd> sMenuAds;
|
||||
|
||||
|
@ -137,6 +138,7 @@ public class AdsManager
|
|||
final String title = getStringByKeyOrDefault(menuItemJson.getJSONObject(TITLE_KEY), localeKey);
|
||||
final String id = menuItemJson.getString(ID_KEY);
|
||||
final Bitmap bitmap = loadAdIcon(icon, id);
|
||||
final String appPackage = menuItemJson.optString(ID_APP_PACKAGE);
|
||||
|
||||
ads.add(new MenuAd(icon,
|
||||
title,
|
||||
|
@ -144,7 +146,8 @@ public class AdsManager
|
|||
id,
|
||||
menuItemJson.getString(APP_URL_KEY),
|
||||
webUrl,
|
||||
bitmap));
|
||||
bitmap,
|
||||
appPackage));
|
||||
}
|
||||
|
||||
return ads;
|
||||
|
|
|
@ -11,10 +11,11 @@ public class MenuAd implements Parcelable
|
|||
private String mHexColor;
|
||||
private String mId;
|
||||
private String mAppUrl;
|
||||
private String mAppPackage;
|
||||
private String mWebUrl;
|
||||
private Bitmap mIcon;
|
||||
|
||||
public MenuAd(String iconUrl, String title, String hexColor, String id, String appUrl, String webUrl, Bitmap icon)
|
||||
public MenuAd(String iconUrl, String title, String hexColor, String id, String appUrl, String webUrl, Bitmap icon, String appPackage)
|
||||
{
|
||||
mIconUrl = iconUrl;
|
||||
mTitle = title;
|
||||
|
@ -23,6 +24,7 @@ public class MenuAd implements Parcelable
|
|||
mAppUrl = appUrl;
|
||||
mWebUrl = webUrl;
|
||||
mIcon = icon;
|
||||
mAppPackage = appPackage;
|
||||
}
|
||||
|
||||
public MenuAd(Parcel source)
|
||||
|
@ -32,6 +34,7 @@ public class MenuAd implements Parcelable
|
|||
mHexColor = source.readString();
|
||||
mId = source.readString();
|
||||
mAppUrl = source.readString();
|
||||
mAppPackage = source.readString();
|
||||
mWebUrl = source.readString();
|
||||
mIcon = source.readParcelable(Bitmap.class.getClassLoader());
|
||||
}
|
||||
|
@ -77,6 +80,16 @@ public class MenuAd implements Parcelable
|
|||
return mIcon;
|
||||
}
|
||||
|
||||
public String getAppPackage()
|
||||
{
|
||||
return mAppPackage;
|
||||
}
|
||||
|
||||
public void setAppPackage(String appPackage)
|
||||
{
|
||||
mAppPackage = appPackage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents()
|
||||
{
|
||||
|
@ -91,6 +104,7 @@ public class MenuAd implements Parcelable
|
|||
dest.writeString(mHexColor);
|
||||
dest.writeString(mId);
|
||||
dest.writeString(mAppUrl);
|
||||
dest.writeString(mAppPackage);
|
||||
dest.writeString(mWebUrl);
|
||||
dest.writeParcelable(mIcon, 0);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import android.os.Bundle;
|
|||
import android.os.Environment;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
|
@ -347,7 +348,7 @@ public class MWMActivity extends NvEventQueueActivity
|
|||
{
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT &&
|
||||
BuildConfig.IS_PRO &&
|
||||
(Utils.isAppInstalled(Constants.Package.MWM_LITE_PACKAGE) || Utils.isAppInstalled(Constants.Package.MWM_SAMSUNG_PACKAGE)))
|
||||
(Utils.isPackageInstalled(Constants.Package.MWM_LITE_PACKAGE) || Utils.isPackageInstalled(Constants.Package.MWM_SAMSUNG_PACKAGE)))
|
||||
{
|
||||
if (!mPathManager.containsLiteMapsOnSdcard())
|
||||
return;
|
||||
|
@ -743,9 +744,15 @@ public class MWMActivity extends NvEventQueueActivity
|
|||
@Override
|
||||
public void onClick(View v)
|
||||
{
|
||||
final Intent it = new Intent(Intent.ACTION_VIEW);
|
||||
it.setData(Uri.parse(ad.getAppUrl()));
|
||||
startActivity(it);
|
||||
final String appPackage = ad.getAppPackage();
|
||||
if (!TextUtils.isEmpty(appPackage) && Utils.isPackageInstalled(appPackage))
|
||||
Utils.launchPackage(MWMActivity.this, appPackage);
|
||||
else
|
||||
{
|
||||
final Intent it = new Intent(Intent.ACTION_VIEW);
|
||||
it.setData(Uri.parse(ad.getAppUrl()));
|
||||
startActivity(it);
|
||||
}
|
||||
}
|
||||
});
|
||||
mVerticalToolbar.addView(view, startAdMenuPosition++);
|
||||
|
|
|
@ -28,6 +28,7 @@ public class Constants
|
|||
|
||||
public static final String DATA_SCHEME_FILE = "file";
|
||||
public static final String MENU_ADS_JSON = "http://application.server/android/features.json";
|
||||
public static final String MENU_ADS_JSON_TEST = "http://application.server/android/test.json";
|
||||
|
||||
private Url() {}
|
||||
}
|
||||
|
|
|
@ -193,7 +193,7 @@ public class Utils
|
|||
return args;
|
||||
}
|
||||
|
||||
public static boolean isAppInstalled(String packageUri)
|
||||
public static boolean isPackageInstalled(String packageUri)
|
||||
{
|
||||
PackageManager pm = MWMApplication.get().getPackageManager();
|
||||
boolean installed;
|
||||
|
@ -208,6 +208,14 @@ public class Utils
|
|||
return installed;
|
||||
}
|
||||
|
||||
public static void launchPackage(Activity activity, String appPackage)
|
||||
{
|
||||
final Intent intent = activity.getPackageManager().getLaunchIntentForPackage(appPackage);
|
||||
if (intent != null)
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
public static boolean isIntentAvailable(Intent intent)
|
||||
{
|
||||
PackageManager mgr = MWMApplication.get().getPackageManager();
|
||||
|
|
Loading…
Add table
Reference in a new issue