所以,我试图通过UDP连接向朋友发送一个简单的字符串到C#应用程序。
这是我用来尝试发送字符串的方法。
public void runUdpClient() {
String udpMsg = "ALOOOOOO ";
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
InetAddress serverAddr = InetAddress.getByName("xxx.xxx.xxx.xxx");
DatagramPacket dp;
dp = new DatagramPacket(udpMsg.getBytes(), udpMsg.length(), serverAddr, 55901);
ds.send(dp);
} catch (SocketException e) {
e.printStackTrace();
}catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
}
(没有说实际IP,为了我朋友的PC的安全而掩盖它)
现在,我得到的错误如下:
05-20 14:43:44.399: E/DatabaseUtils(2347): Writing exception to parcel
05-20 14:43:44.399: E/DatabaseUtils(2347): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
05-20 14:43:44.399: E/DatabaseUtils(2347): at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
05-20 14:43:44.399: E/DatabaseUtils(2347): at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
05-20 14:43:44.399: E/DatabaseUtils(2347): at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
05-20 14:43:44.399: E/DatabaseUtils(2347): at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
05-20 14:43:44.399: E/DatabaseUtils(2347): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
05-20 14:43:44.399: E/DatabaseUtils(2347): at android.os.Binder.execTransact(Binder.java:388)
05-20 14:43:44.399: E/DatabaseUtils(2347): at dalvik.system.NativeStart.run(Native Method)
现在,这是我第一次尝试通过UDP连接发送内容,所以我可能搞砸了某些内容(?),但我对此表示怀疑,因为我已经检查并重新检查了......
如果需要其他信息,请与我们联系。
编辑:添加权限
<uses-permission android:name="android.permission.INTERNET"/> <usespermissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
答案 0 :(得分:-1)
应用程序需要使用UDP发送数据的必要权限。权限在Android项目的AndroidManifest.xml中定义。
如果您尚未添加其他权限,请将以下行添加到AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
有关android中权限的更多信息,请查看android开发者网络: https://developer.android.com/guide/topics/security/permissions.html