From c57c41ade0d9af8a273085ecc60e30fce2621098 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Wed, 7 Jul 2021 22:40:54 -0400 Subject: [PATCH] 1.1.1.1 Signed-off-by: Christine Dodrill --- app/build.gradle | 14 ++++++-- app/src/main/AndroidManifest.xml | 3 +- .../website/christine/xesite/Application.kt | 3 +- .../christine/xesite/LauncherActivity.kt | 9 +---- .../website/christine/xesite/NewPostWidget.kt | 33 ++++++++++++++----- app/src/main/res/layout/new_post_widget.xml | 23 ++++++++----- app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 10 ++++++ app/src/main/res/values/themes.xml | 9 +++++ app/src/main/res/xml/new_post_widget_info.xml | 2 +- 10 files changed, 74 insertions(+), 33 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9878764..b42ee35 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,10 +52,10 @@ android { compileSdkVersion 29 defaultConfig { applicationId "website.christine.xesite" - minSdkVersion 19 + minSdkVersion 21 targetSdkVersion 29 - versionCode 6 - versionName "1.1.0.0" + versionCode 8 + versionName "1.1.1.1" // The name for the application resValue "string", "appName", twaManifest.name @@ -153,6 +153,9 @@ android { buildFeatures { viewBinding true } + kotlinOptions { + jvmTarget = '1.8' + } } task generateShorcutsFile { @@ -203,4 +206,9 @@ dependencies { implementation 'com.google.code.gson:gson:2.8.7' implementation 'com.google.androidbrowserhelper:locationdelegation:1.0.0' implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.2.0' + implementation 'com.google.android.material:material:1.2.1' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.1' + implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' + implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1f68122..d8dd4c5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,7 @@ android:manageSpaceActivity="com.google.androidbrowserhelper.trusted.ManageDataLauncherActivity" android:supportsRtl="true" android:theme="@android:style/Theme.Translucent.NoTitleBar"> + @@ -94,7 +95,7 @@ diff --git a/app/src/main/java/website/christine/xesite/Application.kt b/app/src/main/java/website/christine/xesite/Application.kt index 6703bb5..74ee61e 100644 --- a/app/src/main/java/website/christine/xesite/Application.kt +++ b/app/src/main/java/website/christine/xesite/Application.kt @@ -48,5 +48,4 @@ class Application : Application() { } internal val NEW_POST_CHANNEL = "New Posts"; -internal val NEW_POST_CHANNEL_DESC = "New posts on christine.website"; -internal val notificationId = 1; \ No newline at end of file +internal val NEW_POST_CHANNEL_DESC = "New posts on christine.website"; \ No newline at end of file diff --git a/app/src/main/java/website/christine/xesite/LauncherActivity.kt b/app/src/main/java/website/christine/xesite/LauncherActivity.kt index 1c1f528..be153c7 100644 --- a/app/src/main/java/website/christine/xesite/LauncherActivity.kt +++ b/app/src/main/java/website/christine/xesite/LauncherActivity.kt @@ -15,13 +15,6 @@ */ package website.christine.xesite -import android.content.Context -import android.net.Uri import com.google.androidbrowserhelper.trusted.LauncherActivity -class LauncherActivity : LauncherActivity() { - override fun getLaunchingUrl(): Uri { - // Get the original launch Url. - return super.getLaunchingUrl() - } -} \ No newline at end of file +class LauncherActivity : LauncherActivity() {} \ No newline at end of file diff --git a/app/src/main/java/website/christine/xesite/NewPostWidget.kt b/app/src/main/java/website/christine/xesite/NewPostWidget.kt index 6c766da..0dc6169 100644 --- a/app/src/main/java/website/christine/xesite/NewPostWidget.kt +++ b/app/src/main/java/website/christine/xesite/NewPostWidget.kt @@ -1,11 +1,11 @@ package website.christine.xesite -import android.app.NotificationChannel -import android.app.NotificationManager +import android.app.PendingIntent import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetProvider import android.content.Context -import android.os.Build +import android.content.Intent +import android.net.Uri import android.util.Log import android.widget.RemoteViews import androidx.core.app.NotificationCompat @@ -15,6 +15,7 @@ import com.android.volley.Response import com.android.volley.toolbox.BasicNetwork import com.android.volley.toolbox.DiskBasedCache import com.android.volley.toolbox.HurlStack +import java.util.concurrent.ThreadLocalRandom /** * Implementation of App Widget functionality. @@ -26,17 +27,22 @@ class NewPostWidget : AppWidgetProvider() { val pkgInfo = ctx.getPackageManager().getPackageInfo(ctx.packageName, 0) return ctx.packageName.plus("/").plus(pkgInfo.versionName) + .plus("(android; +https://christine.website/contact)") } private fun notify(ctx: Context, newPost: NewPost) { + val notificationIntent = Intent(Intent.ACTION_VIEW, Uri.parse(newPost.link)) + val pendingIntent: PendingIntent = PendingIntent.getActivity(ctx, 0, notificationIntent, 0) + var builder = NotificationCompat.Builder(ctx, NEW_POST_CHANNEL) .setSmallIcon(R.drawable.splash) + .setContentIntent(pendingIntent) .setContentTitle(newPost.title) .setContentText(newPost.summary) .setPriority(NotificationCompat.PRIORITY_DEFAULT) NotificationManagerCompat.from(ctx).apply { - notify(notificationId, builder.build()) + notify(ThreadLocalRandom.current().nextInt(), builder.build()) } } @@ -64,7 +70,7 @@ class NewPostWidget : AppWidgetProvider() { Log.println(Log.INFO, "new_post", response.toString()) // There may be multiple widgets active, so update all of them - for (appWidgetId in appWidgetIds) { + appWidgetIds.forEach { appWidgetId -> this.updateAppWidget(ctx, appWidgetManager, appWidgetId, response) } }, Response.ErrorListener { error -> @@ -99,32 +105,41 @@ class NewPostWidget : AppWidgetProvider() { override fun onEnabled(ctx: Context) { this.makeQueue(ctx) - //this.createNotificationChannel(ctx) - savePref(ctx, "old_url", "http://google.com") } override fun onDisabled(context: Context) { // Enter relevant functionality for when the last widget is disabled } + override fun onReceive(ctx: Context?, intent: Intent?) { + super.onReceive(ctx, intent) + } + private fun updateAppWidget( - context: Context, + ctx: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int, body: NewPost ) { // Construct the RemoteViews object - val views = RemoteViews(context.packageName, R.layout.new_post_widget) + val views = RemoteViews(ctx.packageName, R.layout.new_post_widget) views.setTextViewText( R.id.article_title, body.title ) + views.setTextViewText( R.id.article_preview, body.summary ) + val pendingIntent: PendingIntent = Intent(Intent.ACTION_VIEW, Uri.parse(body.link)) + .let { intent -> + PendingIntent.getActivity(ctx, 0, intent, 0) + } + views.setOnClickPendingIntent(R.id.widget_parent, pendingIntent) + // Instruct the widget manager to update the widget appWidgetManager.updateAppWidget(appWidgetId, views) } diff --git a/app/src/main/res/layout/new_post_widget.xml b/app/src/main/res/layout/new_post_widget.xml index d3121f7..53b80c9 100644 --- a/app/src/main/res/layout/new_post_widget.xml +++ b/app/src/main/res/layout/new_post_widget.xml @@ -8,6 +8,7 @@ android:theme="@style/ThemeOverlay.Xesite_android.AppWidgetContainer"> + android:layout_marginStart="0dp" + android:layout_marginTop="0dp" + android:layout_marginEnd="0dp" + android:layout_marginBottom="0dp" + android:contentDescription="Logo" + android:src="@drawable/splash" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 4db8c59..c487572 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,5 +6,6 @@ Refer to App Widget Documentation for margin information http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout --> 0dp + 16dp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9f580c4..28728de 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,4 +5,14 @@ Add widget New Posts Brand new posts on christine.website + TestActivity + + First Fragment + Second Fragment + Next + Previous + Logo + + Hello first fragment + Hello second fragment. Arg: %1$s \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 3093407..76a2980 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -4,4 +4,13 @@ @color/gruvbox_dark_bg @color/gruvbox_dark_fg + + + +