我需要将下面的类中的数据传递到我的Flitter应用程序,其中的数据仅在来电事件发生时可用。我需要将此数据(mobileNumber)传递给颤振(如果可能,即使颤振应用程序终止,我也需要传递数据)
广播接收器。Java语言
package com.ashbu.flutterappbackground;
...
public class MyBroadcastReceiver extends BroadcastReceiver {
String phoneNumber;
@Override
public void onReceive(final Context context, Intent intent) {
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
phoneNumber = incomingNumber;
Toast.makeText(context, "TeleDuce Customer "+ incomingNumber,
Toast.LENGTH_LONG).show();
}
},PhoneStateListener.LISTEN_CALL_STATE);
}
public String getData() {
String number = null;
if (phoneNumber != null) {
number = phoneNumber;
}else {
number = "noData";
}
return number;
}
}根据以上代码,我需要将incomingNumber传递给Flatter。如果可能-即使应用程序已关闭,也要共享数据。
MainActivity.java
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.dev/getNumber";
AlarmManager alarmManager;
PendingIntent pendingIntent;
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(this, MyService.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
// Note: this method is invoked on the main thread.
if (call.method.equals("getMobileNumber")) {
startAlarm();
MyBroadcastReceiver dataGEt = new MyBroadcastReceiver();
System.out.println(dataGEt.getData());
result.success(dataGEt.getData());
} else {
cancelAlarm();
}
}
);
}
private void startAlarm() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 0, pendingIntent);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, 0, pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, 0, pendingIntent);
}
}
private void cancelAlarm() {
alarmManager.cancel(pendingIntent);
Toast.makeText(getApplicationContext(), "Alarm Cancelled", Toast.LENGTH_LONG).show();
}
}
目前,即使应用程序被终止,上述代码也能正常工作。但我不知道在应用程序终止后,Flitter是否会接受数据
我将列表作为参数从main.dart传递到MainActivity.kt类
总的来说。飞奔
var items =['hello', 'hii', 'flowers', 'roses','loutes'];
Future<void> _getDeviceInfo() async {
String result;
try {
platform.invokeMethod('getDeviceInfo' , items).then((items) {
result = items.toString();
setState(() {
deviceInfo = result;
});
});
} on PlatformException catch (e) {
print("_getDeviceInfo==>${e.message}");
}
}
在MainActivity中。kt级
package com.example.flutter_to_native
import android.content.Intent
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity : FlutterActivity() {
private val CHANNEL = "com.example.flutter/device_info" // Unique Channel
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {
// Note: this method is invoked on the main thread.
call, result ->
if (call.method == "getDeviceInfo") {
val data = call.arguments
Log.d("data1", "$data")
val intent = Intent(this, DemoActivity::class.java)
intent.putExtra("data",data.toString())
startActivity(intent)
else {
result.notImplemented()
}
}
}
}
您应该在flatterside中实现methodHandler,并且应该使methodchannel成为静态对象
例如
class MethodChannelHelper {
static const MethodChannel channel = const MethodChannel('method_channal_name');
}
class MethodChannelCall{
static initMethodChannel({Function onCallBack}) async {
MethodChannelHelper.channel.setMethodCallHandler((MethodCall call) async {
switch (call.method) {
case 'callback_from_native':
print("This method will be called when native fire")
}
});
await MethodChannelHelper.channel.invokeMethod('call_native');
}
}
总的来说。飞奔
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await MethodChannelCall.initMethodChannel(onCallBack: (payload) {
});
runApp(MyApp());
}
现在在Android端
override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
when (call.method) {
"call_native" -> {
methodChannel?.invokeMethod("callback_from_native","")
}
}
我需要将一些数据从 Angular 传递到 Node.js 服务器。这是我的角度帖子列表组件:从“@angular/核心”导入 { 组件,OnInit };从 “@angular/common/http” 导入 { HttpClient }; 我的node.js服务器: 我想安慰一下。记录数据,但什么都没有发生。
我一直在尝试调试通过平台通道在颤振中调用的本机android代码,调试仅在颤振端进行。在本机android中,执行不会命中断点。应用程序按预期工作,但调试没有。我正在使用Android studio。有人能告诉我如何调试原生android代码吗?
本文向大家介绍Android如何在原生App中嵌入Flutter,包括了Android如何在原生App中嵌入Flutter的使用技巧和注意事项,需要的朋友参考一下 本文参考文档Add Flutter to existing apps。 首先有一个可以运行的原生项目 第一步:新建Flutter module Terminal进入到项目根目录,执行flutter create -t module ‘m
我正在开发一个应用程序,该应用程序收集用户选择(从复选框中)并将其发送到一个新活动(当按下按钮时)。在新活动中,将收集一个新数据(editText)并将新收集的接收数据合并并通过电子邮件发送。 当我按下第一个按钮将复选框数据发送到新活动时,我得到一个错误: 应用程序意外停止 下面是代码: 复选框转换方法为: 所以,如果有任何错误,请告诉我。
我似乎不知道如何使通过平台频道从颤振应用程序调用的本机Android模块的调试工作正常。我使用的是颤振文档中的样本(https://flutter.dev/docs/development/platform-integration/platform-channels).我试过以下方法: 在IntelliJ中打开Flutter项目 右键单击android文件夹,选择Flutter|Open Andr
我正在尝试从Android向我的php服务器提交数据。然而,所有的答案似乎都使用了不推荐使用的ApacheHTTP库。我不想用它,当我试着用的时候,它不起作用。 现在它似乎什么也没做。它似乎连接到web服务器,但服务器不写入任何数据。如果我只是用浏览器访问url,它会写入一个文件。 php代码是 然后在Android studio中,我会在按下按钮后放入所有代码