Heinrich
Committed by David PHAM-VAN

Changed Activity to Context

@@ -26,6 +26,6 @@ subprojects { @@ -26,6 +26,6 @@ subprojects {
26 project.evaluationDependsOn(':app') 26 project.evaluationDependsOn(':app')
27 } 27 }
28 28
29 -task clean(type: Delete) { 29 +tasks.register("clean", Delete) {
30 delete rootProject.buildDir 30 delete rootProject.buildDir
31 } 31 }
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 - Implement PdfActionBarTheme for actions bar and add method scrollToPage [Aleksei] 6 - Implement PdfActionBarTheme for actions bar and add method scrollToPage [Aleksei]
7 - Update cursors in zoom mode for web [Aleksei] 7 - Update cursors in zoom mode for web [Aleksei]
8 - Output image sized to cropBox instead of mediaBox (iOS) [garrettApproachableGeek] 8 - Output image sized to cropBox instead of mediaBox (iOS) [garrettApproachableGeek]
  9 +- Replace Activity with Context for Service Compatibility (Android) [Heinrich]
9 10
10 ## 5.11.1 11 ## 5.11.1
11 12
1 package net.nfet.flutter.printing; 1 package net.nfet.flutter.printing;
2 2
3 -import android.app.Activity; 3 +import android.content.Context;
4 import android.os.Build; 4 import android.os.Build;
5 import android.print.PrintAttributes; 5 import android.print.PrintAttributes;
6 6
7 import androidx.annotation.NonNull; 7 import androidx.annotation.NonNull;
8 import androidx.annotation.RequiresApi; 8 import androidx.annotation.RequiresApi;
9 9
  10 +import java.lang.ref.WeakReference;
10 import java.util.ArrayList; 11 import java.util.ArrayList;
11 import java.util.HashMap; 12 import java.util.HashMap;
12 13
@@ -14,11 +15,11 @@ import io.flutter.plugin.common.MethodCall; @@ -14,11 +15,11 @@ import io.flutter.plugin.common.MethodCall;
14 import io.flutter.plugin.common.MethodChannel; 15 import io.flutter.plugin.common.MethodChannel;
15 16
16 public class PrintingHandler implements MethodChannel.MethodCallHandler { 17 public class PrintingHandler implements MethodChannel.MethodCallHandler {
17 - private final Activity activity; 18 + private final Context context;
18 private final MethodChannel channel; 19 private final MethodChannel channel;
19 20
20 - PrintingHandler(@NonNull Activity activity, @NonNull MethodChannel channel) {  
21 - this.activity = activity; 21 + PrintingHandler(@NonNull Context context, @NonNull MethodChannel channel) {
  22 + this.context = context;
22 this.channel = channel; 23 this.channel = channel;
23 } 24 }
24 25
@@ -32,7 +33,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler { @@ -32,7 +33,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler {
32 Double height = call.argument("height"); 33 Double height = call.argument("height");
33 34
34 final PrintingJob printJob = 35 final PrintingJob printJob =
35 - new PrintingJob(activity, this, (int) call.argument("job")); 36 + new PrintingJob(context, this, (int) call.argument("job"));
36 assert name != null; 37 assert name != null;
37 printJob.printPdf(name, width, height); 38 printJob.printPdf(name, width, height);
38 39
@@ -41,7 +42,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler { @@ -41,7 +42,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler {
41 } 42 }
42 case "cancelJob": { 43 case "cancelJob": {
43 final PrintingJob printJob = 44 final PrintingJob printJob =
44 - new PrintingJob(activity, this, (int) call.argument("job")); 45 + new PrintingJob(context, this, (int) call.argument("job"));
45 printJob.cancelJob(null); 46 printJob.cancelJob(null);
46 result.success(1); 47 result.success(1);
47 break; 48 break;
@@ -52,7 +53,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler { @@ -52,7 +53,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler {
52 final String subject = call.argument("subject"); 53 final String subject = call.argument("subject");
53 final String body = call.argument("body"); 54 final String body = call.argument("body");
54 final ArrayList<String> emails = call.argument("emails"); 55 final ArrayList<String> emails = call.argument("emails");
55 - PrintingJob.sharePdf(activity, document, name, subject, body, emails); 56 + PrintingJob.sharePdf(context, document, name, subject, body, emails);
56 result.success(1); 57 result.success(1);
57 break; 58 break;
58 } 59 }
@@ -64,7 +65,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler { @@ -64,7 +65,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler {
64 Double marginRight = call.argument("marginRight"); 65 Double marginRight = call.argument("marginRight");
65 Double marginBottom = call.argument("marginBottom"); 66 Double marginBottom = call.argument("marginBottom");
66 final PrintingJob printJob = 67 final PrintingJob printJob =
67 - new PrintingJob(activity, this, (int) call.argument("job")); 68 + new PrintingJob(context, this, (int) call.argument("job"));
68 69
69 assert width != null; 70 assert width != null;
70 assert height != null; 71 assert height != null;
@@ -98,7 +99,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler { @@ -98,7 +99,7 @@ public class PrintingHandler implements MethodChannel.MethodCallHandler {
98 final ArrayList<Integer> pages = call.argument("pages"); 99 final ArrayList<Integer> pages = call.argument("pages");
99 Double scale = call.argument("scale"); 100 Double scale = call.argument("scale");
100 final PrintingJob printJob = 101 final PrintingJob printJob =
101 - new PrintingJob(activity, this, (int) call.argument("job")); 102 + new PrintingJob(context, this, (int) call.argument("job"));
102 printJob.rasterPdf(document, pages, scale); 103 printJob.rasterPdf(document, pages, scale);
103 result.success(1); 104 result.success(1);
104 break; 105 break;
@@ -16,10 +16,12 @@ @@ -16,10 +16,12 @@
16 16
17 package net.nfet.flutter.printing; 17 package net.nfet.flutter.printing;
18 18
19 -import android.app.Activity; 19 +import android.content.Context;
20 20
21 import androidx.annotation.NonNull; 21 import androidx.annotation.NonNull;
22 22
  23 +import java.lang.ref.WeakReference;
  24 +
23 import io.flutter.embedding.engine.plugins.FlutterPlugin; 25 import io.flutter.embedding.engine.plugins.FlutterPlugin;
24 import io.flutter.embedding.engine.plugins.activity.ActivityAware; 26 import io.flutter.embedding.engine.plugins.activity.ActivityAware;
25 import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; 27 import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
@@ -30,20 +32,21 @@ import io.flutter.plugin.common.MethodChannel; @@ -30,20 +32,21 @@ import io.flutter.plugin.common.MethodChannel;
30 * PrintingPlugin 32 * PrintingPlugin
31 */ 33 */
32 public class PrintingPlugin implements FlutterPlugin, ActivityAware { 34 public class PrintingPlugin implements FlutterPlugin, ActivityAware {
33 - private Activity activity; 35 + private Context context;
34 private MethodChannel channel; 36 private MethodChannel channel;
35 private PrintingHandler handler; 37 private PrintingHandler handler;
36 38
37 @Override 39 @Override
38 public void onAttachedToEngine(FlutterPluginBinding binding) { 40 public void onAttachedToEngine(FlutterPluginBinding binding) {
  41 + context = binding.getApplicationContext();
39 onAttachedToEngine(binding.getBinaryMessenger()); 42 onAttachedToEngine(binding.getBinaryMessenger());
40 } 43 }
41 44
42 private void onAttachedToEngine(BinaryMessenger messenger) { 45 private void onAttachedToEngine(BinaryMessenger messenger) {
43 channel = new MethodChannel(messenger, "net.nfet.printing"); 46 channel = new MethodChannel(messenger, "net.nfet.printing");
44 47
45 - if (activity != null) {  
46 - handler = new PrintingHandler(activity, channel); 48 + if (context != null) {
  49 + handler = new PrintingHandler(context, channel);
47 channel.setMethodCallHandler(handler); 50 channel.setMethodCallHandler(handler);
48 } 51 }
49 } 52 }
@@ -57,14 +60,16 @@ public class PrintingPlugin implements FlutterPlugin, ActivityAware { @@ -57,14 +60,16 @@ public class PrintingPlugin implements FlutterPlugin, ActivityAware {
57 60
58 @Override 61 @Override
59 public void onAttachedToActivity(ActivityPluginBinding binding) { 62 public void onAttachedToActivity(ActivityPluginBinding binding) {
60 - onAttachedToActivity(binding.getActivity()); 63 + if (context != null) {
  64 + context = null;
  65 + }
  66 + context = binding.getActivity();
  67 + onAttachedToActivity(context);
61 } 68 }
62 69
63 - private void onAttachedToActivity(Activity _activity) {  
64 - activity = _activity;  
65 -  
66 - if (activity != null && channel != null) {  
67 - handler = new PrintingHandler(activity, channel); 70 + private void onAttachedToActivity(Context context) {
  71 + if (context != null && channel != null) {
  72 + handler = new PrintingHandler(context, channel);
68 channel.setMethodCallHandler(handler); 73 channel.setMethodCallHandler(handler);
69 } 74 }
70 } 75 }
@@ -76,13 +81,15 @@ public class PrintingPlugin implements FlutterPlugin, ActivityAware { @@ -76,13 +81,15 @@ public class PrintingPlugin implements FlutterPlugin, ActivityAware {
76 81
77 @Override 82 @Override
78 public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { 83 public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
79 - onAttachedToActivity(binding.getActivity()); 84 + context = null;
  85 + context = binding.getActivity();
  86 + onAttachedToActivity(context);
80 } 87 }
81 88
82 @Override 89 @Override
83 public void onDetachedFromActivity() { 90 public void onDetachedFromActivity() {
84 channel.setMethodCallHandler(null); 91 channel.setMethodCallHandler(null);
85 - activity = null; 92 + context = null;
86 handler = null; 93 handler = null;
87 } 94 }
88 } 95 }