Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 异步任务测试连接_Java_Android_Android Fragments_Android Asynctask - Fatal编程技术网

Java 异步任务测试连接

Java 异步任务测试连接,java,android,android-fragments,android-asynctask,Java,Android,Android Fragments,Android Asynctask,我试图使用AsyncTask它的工作时,设备有互联网连接,但当我打开,没有互联网出现这条消息不幸,已经停止,按照代码,我做错了什么?有人能给我解释一下吗 PS:我有一个活动,我在片段中处理AsyncTask 使用异步任务的片段 public class MasonFragment extends Fragment { private ListView lstMason; private ProgressDialog dialog; //private Fragment fragmentMai

我试图使用AsyncTask它的工作时,设备有互联网连接,但当我打开,没有互联网出现这条消息不幸,已经停止,按照代码,我做错了什么?有人能给我解释一下吗

PS:我有一个活动,我在片段中处理AsyncTask

使用异步任务的片段

public class MasonFragment extends Fragment {

private ListView lstMason;
private ProgressDialog dialog;

//private Fragment fragmentMain = new MainFragment();

public MasonFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_mason, container, false);

    lstMason = (ListView)view.findViewById(R.id.lstMason);

    // Create default options which will be used for every
    // displayImage(...) call if no options will be passed to this method
    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getActivity())
            .defaultDisplayImageOptions(defaultOptions).build();
    ImageLoader.getInstance().init(config); // Do it on Application start
    //To that class work need this: compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' in gradle module

    new JSONTask().execute("https://deliveryteste.000webhostapp.com/production_version_1/json_services_v1.txt");

    return view;

}

/*private View.OnClickListener requestJSON = new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        new JSONTask().execute("My_URL");

    }
};*/

public class JSONTask extends AsyncTask<String, String, List<Services>> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected List<Services> doInBackground(String... params) {

        if(new CheckNetwork(getActivity()).isNetworkAvailable()) {

            HttpURLConnection connection = null;
            BufferedReader reader = null;

            try {
                URL url = new URL(params[0]);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();

                InputStream stream = connection.getInputStream();
                reader = new BufferedReader(new InputStreamReader(stream));

                StringBuffer buffer = new StringBuffer();

                String line = "";
                while ((line = reader.readLine()) != null) {

                    buffer.append(line);

                }

                String finalJson = buffer.toString();

                JSONObject jsonObject = new JSONObject(finalJson);

                JSONArray jsonArray = jsonObject.getJSONArray("mason");

                List<Services> servicesList = new ArrayList<>();


                for (int i = 0; i < jsonArray.length(); i++) {

                    JSONObject finalObject = jsonArray.getJSONObject(i);

                    Services services = new Services();

                    services.setName(finalObject.getString("name"));
                    services.setTelephone(finalObject.getString("telephone"));
                    services.setCity(finalObject.getString("city"));
                    services.setDescription(finalObject.getString("description"));
                    services.setRating((float) finalObject.getDouble("rate"));
                    services.setImage(finalObject.getString("image"));
                    services.setFacebook(finalObject.getString("facebook"));

                    servicesList.add(services);

                }


                return servicesList;

            } catch (MalformedURLException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            } catch (JSONException e) {

                e.printStackTrace();
                //backToMain();

            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
                try {
                    if (reader != null) {

                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } else {

            Toast.makeText(getActivity(), "Por favor esteja conectado com a rede!", Toast.LENGTH_LONG).show();

        }

        return null;
    }

    @Override
    protected void onPostExecute(List<Services> result) {
        super.onPostExecute(result);
        ServicesAdapter servicesAdapter = new ServicesAdapter(getActivity(), R.layout.custom_listview, result);
        lstMason.setAdapter(servicesAdapter);
    }
}

//Class to CustomArrayAdapter
public class ServicesAdapter extends ArrayAdapter {

    private List<Services> servicesList;
    private int resource;
    private LayoutInflater inflater;
    public ServicesAdapter(Context context, int resource, List<Services> objects) {
        super(context, resource, objects);
        servicesList = objects;
        this.resource = resource;
        inflater = (LayoutInflater) getActivity().getSystemService(LAYOUT_INFLATER_SERVICE);

    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if(convertView == null){

            convertView = inflater.inflate(resource, null);

        }

        ImageView imgPerson;
        TextView lblName;
        TextView lblTelephone;
        TextView lblDescription;
        TextView lblFacebookResult;
        TextView lblCity;
        RatingBar rtgServiceRating;

        imgPerson = (ImageView)convertView.findViewById(R.id.imgPerson);
        lblName = (TextView)convertView.findViewById(R.id.lblName);
        lblTelephone = (TextView)convertView.findViewById(R.id.lblTelephone);
        lblCity = (TextView)convertView.findViewById(R.id.lblCity);
        lblDescription = (TextView)convertView.findViewById(R.id.lblDescription);
        lblFacebookResult = (TextView)convertView.findViewById(R.id.lblFacebookResult);
        rtgServiceRating = (RatingBar)convertView.findViewById(R.id.rtgSerciveRating);

        // Then later, when you want to display image
        ImageLoader.getInstance().displayImage(servicesList.get(position).getImage(), imgPerson); // Default options will be used

        lblName.setText(servicesList.get(position).getName());
        lblTelephone.setText(String.valueOf(servicesList.get(position).getTelephone()));
        lblDescription.setText(servicesList.get(position).getDescription());
        lblFacebookResult.setText(servicesList.get(position).getFacebook());
        lblCity.setText(servicesList.get(position).getCity());

        //Rating Bar
        rtgServiceRating.setRating(servicesList.get(position).getRating());

        StringBuffer stringBuffer = new StringBuffer();

        return convertView;
    }
}

/*private void backToMain(){

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.lnlContentMain, fragmentMain).commit();

}*/
错误日志:

01-30 17:30:13.886 6868-7284/com.archtech.gabrielgomes.hirehere E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                              Process: com.archtech.gabrielgomes.hirehere, PID: 6868
                                                                              java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                                  at android.os.AsyncTask$3.done(AsyncTask.java:300)
                                                                                  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                                                  at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                                                  at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                                  at java.lang.Thread.run(Thread.java:841)
                                                                               Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10204 nor current process has android.permission.ACCESS_NETWORK_STATE.
                                                                                  at android.os.Parcel.readException(Parcel.java:1472)
                                                                                  at android.os.Parcel.readException(Parcel.java:1426)
                                                                                  at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:1139)
                                                                                  at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:690)
                                                                                  at com.archtech.gabrielgomes.hirehere.CheckNetwork.isNetworkAvailable(CheckNetwork.java:21)
                                                                                  at com.archtech.gabrielgomes.hirehere.fragments.MasonFragment$JSONTask.doInBackground(MasonFragment.java:100)
                                                                                  at com.archtech.gabrielgomes.hirehere.fragments.MasonFragment$JSONTask.doInBackground(MasonFragment.java:90)
                                                                                  at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                                                  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                                                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                                                  at java.lang.Thread.run(Thread.java:841) 
谢谢大家。

错误状态为java.lang.SecurityException:ConnectivityService:用户10204和当前进程都没有android.permission.ACCESS\u NETWORK\u状态


要解决此问题,只需将检查清单文件中权限的可能重复项添加到AndroidManifest.xml文件中即可。您现在是否收到其他错误消息?你能用它更新你的问题吗?
01-30 17:30:13.886 6868-7284/com.archtech.gabrielgomes.hirehere E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                              Process: com.archtech.gabrielgomes.hirehere, PID: 6868
                                                                              java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                                  at android.os.AsyncTask$3.done(AsyncTask.java:300)
                                                                                  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                                                  at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                                                  at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                                  at java.lang.Thread.run(Thread.java:841)
                                                                               Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10204 nor current process has android.permission.ACCESS_NETWORK_STATE.
                                                                                  at android.os.Parcel.readException(Parcel.java:1472)
                                                                                  at android.os.Parcel.readException(Parcel.java:1426)
                                                                                  at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:1139)
                                                                                  at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:690)
                                                                                  at com.archtech.gabrielgomes.hirehere.CheckNetwork.isNetworkAvailable(CheckNetwork.java:21)
                                                                                  at com.archtech.gabrielgomes.hirehere.fragments.MasonFragment$JSONTask.doInBackground(MasonFragment.java:100)
                                                                                  at com.archtech.gabrielgomes.hirehere.fragments.MasonFragment$JSONTask.doInBackground(MasonFragment.java:90)
                                                                                  at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                                                  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                                                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                                                  at java.lang.Thread.run(Thread.java:841)