118 lines
5.0 KiB
Kotlin
118 lines
5.0 KiB
Kotlin
package com.tommasoberlose.anotherwidget.util
|
|
|
|
import android.Manifest
|
|
import android.annotation.SuppressLint
|
|
import android.app.Notification
|
|
import android.app.NotificationManager
|
|
import android.app.PendingIntent
|
|
import android.app.WallpaperManager
|
|
import android.appwidget.AppWidgetManager
|
|
import android.content.*
|
|
import android.content.pm.PackageManager
|
|
import android.graphics.drawable.Drawable
|
|
import android.location.Location
|
|
import android.location.LocationListener
|
|
import android.location.LocationManager
|
|
import android.net.Uri
|
|
import android.os.Bundle
|
|
import android.preference.PreferenceManager
|
|
import android.provider.CalendarContract
|
|
import android.support.annotation.DrawableRes
|
|
import android.support.customtabs.CustomTabsIntent
|
|
import android.support.v4.app.NotificationCompat
|
|
import android.support.v4.content.ContextCompat
|
|
import android.util.Log
|
|
import com.survivingwithandroid.weather.lib.WeatherClient
|
|
import com.survivingwithandroid.weather.lib.WeatherConfig
|
|
import com.survivingwithandroid.weather.lib.exception.WeatherLibException
|
|
import com.survivingwithandroid.weather.lib.model.CurrentWeather
|
|
import com.survivingwithandroid.weather.lib.provider.openweathermap.OpenweathermapProviderType
|
|
import com.survivingwithandroid.weather.lib.request.WeatherRequest
|
|
import com.tommasoberlose.anotherwidget.R
|
|
import com.tommasoberlose.anotherwidget.`object`.Constants
|
|
|
|
import com.tommasoberlose.anotherwidget.`object`.Event
|
|
import com.tommasoberlose.anotherwidget.ui.activity.MainActivity
|
|
import com.tommasoberlose.anotherwidget.ui.activity.SplashActivity
|
|
import com.tommasoberlose.anotherwidget.ui.widget.TheWidget
|
|
|
|
import java.util.ArrayList
|
|
import java.util.Calendar
|
|
|
|
/**
|
|
* Created by tommaso on 05/10/17.
|
|
*/
|
|
|
|
object Util {
|
|
|
|
|
|
fun checkGrantedPermission(context: Context, permission: String): Boolean {
|
|
return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED
|
|
}
|
|
|
|
fun updateWidget(context: Context) {
|
|
val widgetManager = AppWidgetManager.getInstance(context)
|
|
val widgetComponent = ComponentName(context, TheWidget::class.java)
|
|
val widgetIds = widgetManager.getAppWidgetIds(widgetComponent)
|
|
val update = Intent()
|
|
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds)
|
|
update.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
|
context.sendBroadcast(update)
|
|
}
|
|
|
|
fun showNotification(context: Context) {
|
|
val mNotificationManager: NotificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager;
|
|
|
|
if (!Util.checkGrantedPermission(context, Manifest.permission.READ_CALENDAR)) {
|
|
val mBuilder: NotificationCompat.Builder = NotificationCompat.Builder(context, "Settings")
|
|
.setSmallIcon(R.drawable.ic_stat_name)
|
|
.setPriority(Notification.PRIORITY_MIN)
|
|
.setColor(ContextCompat.getColor(context, R.color.colorPrimary))
|
|
.setContentTitle(context.getString(R.string.notification_title))
|
|
.setContentText(context.getString(R.string.notification_subtitle))
|
|
.setAutoCancel(true);
|
|
|
|
val intent: Intent = Intent(context, MainActivity::class.java);
|
|
val pi: PendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
|
mBuilder.setContentIntent(pi);
|
|
mNotificationManager.notify(0, mBuilder.build());
|
|
} else {
|
|
mNotificationManager.cancel(0);
|
|
}
|
|
|
|
}
|
|
|
|
fun openURI(context: Context, url: String) {
|
|
try {
|
|
val builder: CustomTabsIntent.Builder = CustomTabsIntent.Builder();
|
|
builder.setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary));
|
|
val customTabsIntent: CustomTabsIntent = builder.build();
|
|
customTabsIntent.launchUrl(context, Uri.parse(url));
|
|
} catch (e: Exception) {
|
|
val legalIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
|
context.startActivity(legalIntent);
|
|
}
|
|
}
|
|
|
|
fun share(context: Context) {
|
|
val sendIntent = Intent(Intent.ACTION_SEND);
|
|
sendIntent.putExtra(Intent.EXTRA_TEXT,
|
|
"Yep, just another cool widget: https://play.google.com/store/apps/details?id=com.tommasoberlose.anotherwidget");
|
|
sendIntent.setType("text/plain");
|
|
context.startActivity(Intent.createChooser(sendIntent, context.getString(R.string.action_share)));
|
|
}
|
|
|
|
fun showIntro(context: Context) {
|
|
val SP: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
|
|
val firstTime: Boolean = SP.getBoolean(Constants.PREF_FIRST_STEP, true)
|
|
// TODO SP.edit().putBoolean(Constants.PREF_FIRST_STEP, false).apply()
|
|
if (firstTime) {
|
|
context.startActivity(Intent(context, SplashActivity::class.java))
|
|
}
|
|
}
|
|
|
|
fun getCurrentWallpaper(context: Context): Drawable {
|
|
return WallpaperManager.getInstance(context).getDrawable();
|
|
}
|
|
}
|