所以我想创建一个Android应用程序来监控传入的数据。知道每个网络(Wifi,4g)消耗多少数据。我目前正在使用Xamarin.Android,而且我对Android很新。我在大学学习comp sci,并且在使用C#(虽然我一年没有真正编码)和SQL方面有一年的经验。
我已经弄清楚如何使用哪个网络,但我无法使用于检测网络更改的Broadcastreceiver()工作。我发现的唯一解决方案是Java,这使得它更难一点。我翻译了大多数java解决方案,这就是我所要做的:
no operator "+" matches these operands operand types are; const wchar_t[57] + const std::string
现在我的主要问题是如何使用它。这是我到目前为止所做的尝试:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Net;
namespace ProjectData
{
[BroadcastReceiver()]
public class NetworkReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
ConnectivityManager connectivityManager = (ConnectivityManager)
context.GetSystemService(Context.ConnectivityService);
NetworkInfo activeNetInfo =connectivityManager.ActiveNetworkInfo;
if (activeNetInfo != null)
Toast.MakeText(context, "Active Network Type : " + activeNetInfo.TypeName, ToastLength.Short).Show();
}
}
}
我还没有能够测试它,因为我收到了这个错误:
标签<接收器>属性名称包含无效字符' '
对于第10行:
public void Network()
{
NetworkReceiver networkReceiver = new NetworkReceiver();
Intent intent = new Intent(this, networkReceiver.Class);
RegisterReceiver(networkReceiver, new IntentFilter(ConnectivityManager.ConnectivityAction));
}
这是整个清单:
<intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /></intent-filter></receiver>
我在Android 7.0上运行的手机上进行调试
感谢您的帮助!
答案 0 :(得分:0)
尝试改变它
<receiver android:name=".NetworkReceiver"> android:exported=true
到:
<receiver android:name=".NetworkReceiver"
android:exported=true>
答案 1 :(得分:0)
你可以使用来自nugget的Xam.Plugin.Connectivity,效果很好