From 3b433b65856c6b4a0fbff4b72eab55e7ac1f5774 Mon Sep 17 00:00:00 2001 From: xingxing Date: Tue, 26 Dec 2017 18:31:10 +0800 Subject: [PATCH] =?UTF-8?q?git=20rebase=E8=A7=A3=E5=86=B3=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrected the title of the permission requesting dialog in LaunchActivity Add a widget from Android Studio widget template add the layout of widget , add the support Android Studio 3.0 fix the support Android Studio 3.0 Completed the development of app widget to show the recent blogs. chance the previewImage of app widget fixed the bug that occurred when there were less than 30 notes update build tools --- app/build.gradle | 10 +- app/src/main/AndroidManifest.xml | 27 ++++- .../appwidget/AppWidgetViewsFactory.java | 108 ++++++++++++++++++ .../leamonax/appwidget/NoteAppWidget.java | 92 +++++++++++++++ .../NoteAppWidgetConfigureActivity.java | 108 ++++++++++++++++++ .../leamonax/appwidget/RedirActivity.java | 32 ++++++ .../leamonax/appwidget/WidgetService.java | 12 ++ .../org/houxg/leamonax/ui/LaunchActivity.java | 5 +- .../leamonax/ui/edit/NoteEditActivity.java | 8 ++ .../example_appwidget_preview.png | Bin 0 -> 3522 bytes app/src/main/res/drawable-v21/ripple_bg.xml | 11 ++ app/src/main/res/drawable/rounded_corners.xml | 6 + app/src/main/res/layout/note_app_widget.xml | 63 ++++++++++ .../res/layout/note_app_widget_configure.xml | 27 +++++ .../main/res/layout/note_app_widget_row.xml | 36 ++++++ app/src/main/res/values-v14/dimens.xml | 10 ++ app/src/main/res/values-zh/strings.xml | 2 +- app/src/main/res/values/dimens.xml | 6 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/xml/widget_provider.xml | 9 ++ build.gradle | 4 +- gradle.properties | 20 ++-- gradle/wrapper/gradle-wrapper.properties | 4 +- 23 files changed, 580 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/org/houxg/leamonax/appwidget/AppWidgetViewsFactory.java create mode 100644 app/src/main/java/org/houxg/leamonax/appwidget/NoteAppWidget.java create mode 100644 app/src/main/java/org/houxg/leamonax/appwidget/NoteAppWidgetConfigureActivity.java create mode 100644 app/src/main/java/org/houxg/leamonax/appwidget/RedirActivity.java create mode 100644 app/src/main/java/org/houxg/leamonax/appwidget/WidgetService.java create mode 100644 app/src/main/res/drawable-nodpi/example_appwidget_preview.png create mode 100644 app/src/main/res/drawable-v21/ripple_bg.xml create mode 100644 app/src/main/res/drawable/rounded_corners.xml create mode 100644 app/src/main/res/layout/note_app_widget.xml create mode 100644 app/src/main/res/layout/note_app_widget_configure.xml create mode 100644 app/src/main/res/layout/note_app_widget_row.xml create mode 100644 app/src/main/res/values-v14/dimens.xml create mode 100644 app/src/main/res/xml/widget_provider.xml diff --git a/app/build.gradle b/app/build.gradle index 31ba3ae..882ca11 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' + } } repositories { @@ -13,7 +13,6 @@ repositories { maven { url "http://dl.bintray.com/piasy/maven" } } apply plugin: 'com.android.application' -apply plugin: 'com.neenbedankt.android-apt' def dbflow_version = "4.0.0-beta2" def ciName = isEmpty(System.getenv("TRAVIS_TAG")) ? "Staging" : System.getenv("TRAVIS_TAG") @@ -33,7 +32,7 @@ android { } } compileSdkVersion 25 - buildToolsVersion "25.0.2" + buildToolsVersion '26.0.2' defaultConfig { applicationId "com.leanote.android" minSdkVersion 19 @@ -76,12 +75,12 @@ dependencies { compile 'com.android.support:cardview-v7:25.3.0' compile 'com.jakewharton:butterknife:8.4.0' - apt 'com.jakewharton:butterknife-compiler:8.4.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' compile group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '3.4.1' compile group: 'com.squareup.retrofit2', name: 'adapter-rxjava', version: '2.1.0' - apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" + annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" @@ -107,4 +106,5 @@ dependencies { compile 'com.github.piasy:GlideImageLoader:1.2.5' compile 'com.weiwangcn.betterspinner:library-material:1.1.0' + implementation 'com.android.support.constraint:constraint-layout:1.0.2' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c039a6e..29cac41 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,6 @@ - @@ -51,7 +50,9 @@ android:screenOrientation="portrait" android:label="@string/about" /> + android:name=".ui.PictureViewerActivity" + android:label="@string/edit" + android:screenOrientation="portrait" /> + android:resource="@xml/provider_paths" /> + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/org/houxg/leamonax/appwidget/AppWidgetViewsFactory.java b/app/src/main/java/org/houxg/leamonax/appwidget/AppWidgetViewsFactory.java new file mode 100644 index 0000000..0ade0c5 --- /dev/null +++ b/app/src/main/java/org/houxg/leamonax/appwidget/AppWidgetViewsFactory.java @@ -0,0 +1,108 @@ +package org.houxg.leamonax.appwidget; + +import android.appwidget.AppWidgetManager; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.widget.RemoteViews; +import android.widget.RemoteViewsService; + +import org.houxg.leamonax.R; +import org.houxg.leamonax.database.NoteDataStore; +import org.houxg.leamonax.model.Account; +import org.houxg.leamonax.model.Note; +import org.houxg.leamonax.ui.NotePreviewActivity; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class AppWidgetViewsFactory implements RemoteViewsService.RemoteViewsFactory { + private Context ctxt=null; + private int appWidgetId; + private List allNotes; + + public AppWidgetViewsFactory(Context ctxt, Intent intent) { + this.ctxt=ctxt; + appWidgetId=intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID); + + allNotes = NoteDataStore.getAllNotes(Account.getCurrent().getUserId()); + Collections.sort(allNotes, new Comparator() { + @Override + public int compare(Note o1, Note o2) { + String temp1=o1.getUpdatedTimeVal()+""; + String temp2=o2.getUpdatedTimeVal()+""; + return temp2.compareTo(temp1); + } + }); + if(allNotes.size()>30){ + allNotes=allNotes.subList(0,30); + } + } + + + @Override + public void onCreate() { + // no-op + } + + @Override + public void onDestroy() { + // no-op + } + + @Override + public int getCount() { + return(allNotes.size()); + } + + @Override + public RemoteViews getViewAt(int position) { + RemoteViews row=new RemoteViews(ctxt.getPackageName(), + R.layout.note_app_widget_row); + row.setTextViewText(R.id.appwidget_row_title, allNotes.get(position).getTitle()); + String textTemp=""; + if(allNotes.get(position).getContent().length()>200){ + textTemp=allNotes.get(position).getContent().substring(0,200)+"..."; + }else { + textTemp=allNotes.get(position).getContent(); + + } + row.setTextViewText(R.id.appwidget_row_text, textTemp); + + Intent intent=new Intent(); + + Bundle extras=new Bundle(); + extras.putLong(NotePreviewActivity.EXT_NOTE_LOCAL_ID, allNotes.get(position).getId()); + intent.putExtras(extras); + + row.setOnClickFillInIntent(R.id.widget_note, intent); + return(row); + } + + @Override + public RemoteViews getLoadingView() { + return(null); + } + + @Override + public int getViewTypeCount() { + return(1); + } + + @Override + public long getItemId(int position) { + return(position); + } + + @Override + public boolean hasStableIds() { + return(true); + } + + @Override + public void onDataSetChanged() { + // no-op + } +} \ No newline at end of file diff --git a/app/src/main/java/org/houxg/leamonax/appwidget/NoteAppWidget.java b/app/src/main/java/org/houxg/leamonax/appwidget/NoteAppWidget.java new file mode 100644 index 0000000..066e72c --- /dev/null +++ b/app/src/main/java/org/houxg/leamonax/appwidget/NoteAppWidget.java @@ -0,0 +1,92 @@ +package org.houxg.leamonax.appwidget; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.util.Log; +import android.widget.RemoteViews; + +import org.houxg.leamonax.R; + +public class NoteAppWidget extends AppWidgetProvider { + + private int widgetIds[]; + + @Override + public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + Log.i("debug!!!!!!!!!!!!!!!!","接收到广播"); +// abortBroadcast(); +// for (int i=0;i$lds_TJBqcXqPd zF27eE1OjbG+uOJTvj{kk%Sr>+x% z-dKicf&VgL23l(Uhm za0C)&0{;8Z0;16gen?jv+rMK0nx$3%lSxBDAfch52BAg zOB5zPOrOHg{*GWnWcboaG$x5k0dFAUeW<}qOD%xue^MaR{(+@1{w@At|m`Dt&2q9Lv6L_Cv9$5E*l zzgN*YfXbvY0;n{w^(h4S5C-o{qHHW2{>uY{L82)PCZ6I;MB7+u0T>1(5&>z2GB&X? zGBiP;PzWd#1v5ig8Cyfm5HJ|b#P$Tj?7OcG)i;<-q%gnx68`IJ`a|E1W+2mm$Tmbe zDTGL{rBlh^zmi6he#`~_L%hFz2|wn7_@OTZAOqRh+W)cD-?*%1F}TtNA!^@$Xq z-|0YO+ud)}1%ag6ogHx~P|nBo_4N||yhO6@-!vwcNXC{{B_L@`-0Qp9>Oce3v0&4iBBlFXuwKa*PX>tiwI*{1(Wpz!G`auxgGBLL-uAf-! z76{uWmh_6aK>90dlBCv&BL)2dZ%3u_dI20mHWybh^l26d+5^Pu{48|m3%7*6hhiCuzC}?d@tpkB%Ja5*BSO6RzzJ)F(!8A;WsgO`>)Toe9%UR z+kH6adFGg!ZSMw3oSE&m*(5&XoZ2RC@4o&)SA?Ka&ba2A!{X`ZnzqtC7qhQc zcbR)|Pt&ot_r94@^2S{)>tZkaBxHG4V z(-xOTCp)!6IbjQ$`#EHE8$?s^+Ag5#i0N(OQH`3~NmI_{L!~}@&ZOS$)Hxk;Ke};F zpi;7HrpQ4eOvWYrvYM_``pAr1>fF+j%T|=8Wc(I!^lmZ|@0xiNWxO*3cp9?tnj;l+ z5h0x^O%bb7nRoxl9(tA9u2zNqjBnWokGxWTDloA;>+A(Jsl?wYlpyMr{gaz2CgIg& zd(~9kgJ0;XcCjpx3rTDrE=-S3nVH%~JB!&?8Jlu)-Uk+y_2IhZj%hxc;rpOncQLwHpn^Wy=y%@0Yp2gD zap+z``_kF^%RlL>y7Nov>LJgBEJ94CxS7zLF1vpw%l|&{n6~Ks+cY$rb%oWMRAIj* z9TH1R44Z$hleKqoMFT5cnMl~fh>2c4X;rY) zs}k72ZH?RVJ5}H-v*ofG$Y3b{Y_KW&z8s8E;d23pn z%evOfdm=5IlwLcaexZtlY;D5VLQcy094uGVJ!$1HIu~`Wk@_cuIHA6PZESlsf{?qs zO3iFeUroDL5oeVnYhwLsaGjGvOI{W>io8)n=?^N{y3B??@ePZ?K%?spdyb46%W;FD z34OCQ^b#rmU}ek9psrNQGMkGbI&~*C-q1L99(zUq3Rx()X0c@?IJ&&rG-8%PYK_BT zioWVRYkGIbx(&bRdvXD?6`WC^{Bwzda2}(c(;-*nZ~6Po4{u8XiLNF*ioaKzz|Ks_fA2lAfZj2#@RD&W8=Ic8TXhtz zH4ySPqp12#TjW$P&gKSr3F9NAX~q?GVB9dgP=z z=~AAO7Zfc2x%Xc#wl79rhmphteq)!~{bMo}q@uCpxB4uj$GtHh>UW*Y`@Km$szVgV zekHhd(d-09_Oy0?AsPAW@iD5Sf}z(~+0G|Dw@$ztzO_aYyoj@=;w6EOm!1P&YIdt%(lZ$xySfS5(>-u>Iw(!y;jb6o@s4CS zpYJ~wq{O-~ibyMYI?74do*wP{u5#veF83tLh4i`oU<1ZE-qDFsP=8`qOhlDTS00+i zuY2BgR~qY8m)rU0hZGkTeXie5R%}EKCZ-l!Xy@UI8<3f&On)5kQkXj;zOVB+{YCwY z0uq}jU$TV@mOmh&4WxGNd~kNpe7;FcHA0xLtkUY{uNI+AX?t>E*txqQ?}&?`S<8r% z`1zGx%qDA-dmcHJA!m96Vlg+|v0dz&gp60C=7_X=$Di1skjBY%YP#J#&rMq62^p&g z)e{tBY6B;0D-0dI9&CPgJuGrkpI7)~KLJTOgDbX-%Q`ajG=9;e{{8r!9&Sju*_XP7 zLw}s(c8`=<-3{wepo!HGY4dD5V?0$_KQ609v`;7dW~~eQ5FhcN&a_F}R4>IoJ|NoGNa5|5PbYeyQ7DPw|>ER*)1m8dQ+n9i{Sh;i?~UqNls^ zXIO7yN`hMZwu6oBWy~YDcHA|^I`Nx$TfH>1{`dD@%u`>NHw1Ou%eRZ-1}ty + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/rounded_corners.xml b/app/src/main/res/drawable/rounded_corners.xml new file mode 100644 index 0000000..210728a --- /dev/null +++ b/app/src/main/res/drawable/rounded_corners.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/note_app_widget.xml b/app/src/main/res/layout/note_app_widget.xml new file mode 100644 index 0000000..4d1b762 --- /dev/null +++ b/app/src/main/res/layout/note_app_widget.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/note_app_widget_configure.xml b/app/src/main/res/layout/note_app_widget_configure.xml new file mode 100644 index 0000000..d625c16 --- /dev/null +++ b/app/src/main/res/layout/note_app_widget_configure.xml @@ -0,0 +1,27 @@ + + + + + + + +