gpt4 book ai didi

java - 从 Android 应用程序传递值并显示在控制台上

转载 作者:行者123 更新时间:2023-12-01 13:21:29 30 4
gpt4 key购买 nike

在 Mainactivity.java 中,我从 wifi 获取信号强度 5 次并附加到服务中。我通过 Intent 传递数组列表。我通过另一个文件中的Intent获取值。现在,我想将此值传递给java桌面服务器。我在Intent中的onStart中调用asynctask方法。我没有收到任何错误。但没有显示任何值。

当我登录 cat 时,会显示该值。

请告诉我哪里错了

主要 Activity.Java

public class MainActivity extends Activity {  
TextView mTextView;
private WifiManager wifiManager;
int count =0; String data ="";
ArrayList<String> arr = new ArrayList<String>();
private String messsage;
private static final IntentFilter FILTER = new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.text_id);
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
registerReceiver(scanReceiver, FILTER);
wifiManager.startScan();
}


@Override
public void onStart() {
super.onStart();
// Register the scan receiver
registerReceiver(scanReceiver, FILTER);
}
@Override
public void onStop() {
super.onStop();
// Unregister the receiver
unregisterReceiver(scanReceiver);
}
public void onClickRefresh(View v) {
count=0;
wifiManager.startScan();
}
BroadcastReceiver scanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(count<5){
final StringBuilder sb = new StringBuilder();

List<ScanResult> wifiScanList = wifiManager.getScanResults();
for (ScanResult result : wifiScanList) {
if (result.SSID.equals("Dal")) {
sb.append(""+result.level);
}
}
mTextView.setText("caled" +count + sb + " length is" + sb.length());
arr.add(sb.toString());
count++;
wifiManager.startScan();
}
else if (count==5)
{
Intent i= new Intent(context, javaServiceClass.class);
i.putExtra("stock_list", arr);
context.startService(i);
}
}
};

JavaServiceClass.java

    public class javaServiceClass extends Service {

public void onStart(Intent intent, int startId) {

ArrayList<String> stock_list = (ArrayList<String>) intent.getExtras().get("stock_list");

System.out.println(stock_list.get(1) );
messsage = stock_list.get(0);
new Asynctask1().execute(messsage);
}
public class Asynctask1 extends AsyncTask<String, Void, Void> {
private PrintWriter printwriter;
protected Void doInBackground(String... messages) {
final String IP_ADDRESS = "134.190.162.165";
final int DEST_PORT = 4444;

if(messsage !=null){

//Socket client = null;
try {
Socket client = new Socket(IP_ADDRESS, DEST_PORT); // connect to server

printwriter = new PrintWriter(client.getOutputStream(), true);
printwriter.write(messsage); // write the message to output stream

printwriter.flush();
printwriter.close();
client.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
else
{ System.out.println(messsage);}
return null;

最佳答案

我认为您应该将您的值返回到 AsyncTask 类的 onPostExecute() 方法,然后尝试打印您的值,如下所示:

@Override
protected void onPostExecute(String messsage) {
System.out.println(messsage);
}

只需返回您的消息并在此处打印

关于java - 从 Android 应用程序传递值并显示在控制台上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998460/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com