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

标签 java android android-asynctask androidasync-koush

在 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/

相关文章:

java - 这是最快的 : 3 Arraylist synchronized or a HashMap with custom structure as value

android - Cordova /Phonegap : Live update codebase

java - 将用户在 TimePicker 中选择的所有值放入列表中并读取它

android - 重新加载数据后刷新 Fragment 中的 ListView

php - '' Can' t resolve symbol '' Android Studio中asyncTask代码出错

java - 使用 chef 安装 java

java - 如何加快从大量文件中读取的速度(Java)

带有 JOGL 和/或 LWJGL 的 Java 小程序 - 具有适用于每个操作系统的 native

android - 如何在 Android Studio 中为目标添加系统镜像

android - 图像加载期间的多线程问题