Skip to content

Commit 94ad2f6

Browse files
committed
Learing how to use Broadcast
1 parent edbbf7c commit 94ad2f6

File tree

5 files changed

+115
-12
lines changed

5 files changed

+115
-12
lines changed

android/app/src/main/AndroidManifest.xml

+8
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,13 @@
3333
<category android:name="android.intent.category.LAUNCHER"/>
3434
</intent-filter>
3535
</activity>
36+
<receiver
37+
android:name=".MyReceiver"
38+
android:enabled="true"
39+
android:exported="true">
40+
<intent-filter>
41+
<action android:name="net.deniro.android.MY_BROADCAST"/>
42+
</intent-filter>
43+
</receiver>
3644
</application>
3745
</manifest>

android/app/src/main/java/com/example/example/MainActivity.java

+19-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.example;
22

33
import java.util.Map;
4+
import java.util.HashMap;
45

56
import com.alipay.sdk.app.EnvUtils;
67
import com.alipay.sdk.app.PayTask;
@@ -37,15 +38,21 @@
3738
public class MainActivity extends FlutterActivity {
3839
private static final String CHANNEL = "examples.flutter.dev/battery";
3940
private static final String CHARGING_CHANNEL = "samples.flutter.io/charging";
41+
private PayEventSink eventSink = new PayEventSink();
4042

4143
private static final int SDK_PAY_FLAG = 1;
4244
private static final int SDK_AUTH_FLAG = 2;
45+
private String payResult = "none";
4346

4447
@SuppressLint("HandlerLeak")
4548
private Handler mHandler = new Handler() {
4649
@SuppressWarnings("unused")
47-
public void handleMessage(Message msg) {
50+
public void handleMessage(Message msg, final Result result) {
4851
System.out.println("here");
52+
result.success("回调成功");
53+
// Map<String, Object> event = new HashMap<>();
54+
// event.put("event", "completed");
55+
// eventSink.success(event);
4956
};
5057

5158
// public void sendBroadcast(String msg) {
@@ -68,10 +75,8 @@ protected void onCreate(Bundle savedInstanceState) {
6875
private BroadcastReceiver changeStream;
6976
@Override
7077
public void onListen(Object arguments, EventSink events) {
71-
chargingStateChangeReceiver = createChargingStateChangeReceiver(events);
72-
registerReceiver(chargingStateChangeReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
7378
changeStream = createSetStream(events);
74-
registerReceiver(changeStream, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
79+
registerReceiver(changeStream, new Intent("net.deniro.android.MY_BROADCAST"));
7580
}
7681

7782
@Override
@@ -136,7 +141,7 @@ private BroadcastReceiver createSetStream(final EventSink events) {
136141
return new BroadcastReceiver() {
137142
@Override
138143
public void onReceive(Context context, Intent intent) {
139-
events.success("发送广播");
144+
//events.success("发送广播");
140145
}
141146
};
142147
}
@@ -199,10 +204,10 @@ public void run() {
199204
Log.i("msp", result.toString());
200205
System.out.println("success");
201206

202-
// Message msg = new Message();
203-
// msg.what = SDK_PAY_FLAG;
204-
// msg.obj = result;
205-
// mHandler.handleMessage(msg);
207+
Message msg = new Message();
208+
msg.what = SDK_PAY_FLAG;
209+
msg.obj = result;
210+
mHandler.handleMessage(msg);
206211
} catch (Exception e) {
207212
// response.error("error", "支付发起错误", null);
208213
System.out.println("error");
@@ -224,6 +229,11 @@ public void run() {
224229
try{
225230
final String text = "异步返回数据!";
226231
System.out.println("正常");
232+
233+
Message msg = new Message();
234+
msg.what = SDK_PAY_FLAG;
235+
msg.obj = "支付结果";
236+
mHandler.handleMessage(msg);
227237
} catch (Exception e){
228238
System.out.println(e.toString());
229239
//response.error("error", "支付发生错误", null);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.example.example;
2+
3+
import android.content.BroadcastReceiver;
4+
import android.content.Intent;
5+
import android.content.Context;
6+
7+
public class MyReceiver extends BroadcastReceiver {
8+
public MyReceiver() {
9+
}
10+
11+
@Override
12+
public void onReceive(Context context, Intent intent) {
13+
System.out.println("广播开始");
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.example.example;
2+
3+
import io.flutter.plugin.common.EventChannel;
4+
import java.util.ArrayList;
5+
6+
final class PayEventSink implements EventChannel.EventSink {
7+
private EventChannel.EventSink delegate;
8+
private ArrayList<Object> eventQueue = new ArrayList<>();
9+
private boolean done = false;
10+
11+
public void setDelegate(EventChannel.EventSink delegate) {
12+
this.delegate = delegate;
13+
maybeFlush();
14+
}
15+
16+
@Override
17+
public void endOfStream() {
18+
enqueue(new EndOfStreamEvent());
19+
maybeFlush();
20+
done = true;
21+
}
22+
23+
@Override
24+
public void error(String code, String message, Object details) {
25+
enqueue(new ErrorEvent(code, message, details));
26+
maybeFlush();
27+
}
28+
29+
@Override
30+
public void success(Object event) {
31+
enqueue(event);
32+
maybeFlush();
33+
}
34+
35+
private void enqueue(Object event) {
36+
if (done) {
37+
return;
38+
}
39+
eventQueue.add(event);
40+
}
41+
42+
private void maybeFlush() {
43+
if (delegate == null) {
44+
return;
45+
}
46+
for (Object event : eventQueue) {
47+
if (event instanceof EndOfStreamEvent) {
48+
delegate.endOfStream();
49+
} else if (event instanceof ErrorEvent) {
50+
ErrorEvent errorEvent = (ErrorEvent) event;
51+
delegate.error(errorEvent.code, errorEvent.message, errorEvent.details);
52+
} else {
53+
delegate.success(event);
54+
}
55+
}
56+
eventQueue.clear();
57+
}
58+
59+
private static class EndOfStreamEvent {}
60+
61+
private static class ErrorEvent {
62+
String code;
63+
String message;
64+
Object details;
65+
66+
ErrorEvent(String code, String message, Object details) {
67+
this.code = code;
68+
this.message = message;
69+
this.details = details;
70+
}
71+
}
72+
}

lib/base/Alipay.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,8 @@ class _AlipayDemoState extends State<AlipayDemo> {
130130
}
131131

132132
void _onEvent(Object event) {
133-
print('返回: $event.toString()');
134133
setState(() {
135-
_chargingStatus =
136-
"支付结果: ${event == 'charging' ? '' : 'dis'}charging.";
134+
_chargingStatus = "支付结果: ${event == 'charging' ? '' : 'dis'}charging.";
137135
});
138136
}
139137

0 commit comments

Comments
 (0)