E/libprocessgroup:set_timerslack_ns 写入失败:不允许操作

问题描述 投票:0回答:1

9

我在运行 Android 应用程序时遇到这个问题。有谁知道这个问题以及如何解决它?

当我运行 Android 应用程序时,我在 Logcat 中遇到了这个问题。有谁知道这个问题以及如何解决它?

应用程序没有崩溃,但是当我在微调器中选择选项并单击按钮时,它不会在谷歌地图上显示结果

MainActivity.Java

package com.example.nearbyplacedemo;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.loader.content.AsyncTaskLoader;

import android.Manifest;
import android.content.AsyncQueryHandler;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    //initialize variable
    Spinner sp_type;
    Button bt_find;
    SupportMapFragment supportMapFragment;
    GoogleMap map;
    FusedLocationProviderClient fusedLocationProviderClient;
    double currentLat = 0, currentLong = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Assign Variable
        sp_type = findViewById(R.id.sp_type);
        bt_find = findViewById(R.id.bt_find);
        supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.google_map);

        //Initialize Array of place list
        String[] placeTypeList = {"hospital", "medical", "atm"};
        //Initialize Array of Place name list
        String[] placeNameList = {"Hospital", "Medical", "ATM"};

        //set Adapter on Spinner
        sp_type.setAdapter(new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, placeNameList));

        //Initialize Fused location client
        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);

        //check permission
        if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            //if permission is granted
            //call method
            getCurrentLocation();
        } else {
            //when permission denied
            //request permission
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 44);

        }
        bt_find.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //get selected position of spinner
                int i = sp_type.getSelectedItemPosition();
                //Initialize Url
                String url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json" +//Url
                        "?location=" + currentLat + "," + currentLong +//location latitude and longitude
                        "&radius=5000" +//nearby Radius
                        "&type" + placeTypeList[i] +//place type
                        "&sensor = true" +//Sensor
                        "&key=" + "AIzaSyCEidC6oECzj0IexspcvUpqnKPS2_nhKfQ";

                //execute place task method to download json data
                new Placetask().execute(url);
            }
        });


    }

    private void getCurrentLocation() {
        if(ActivityCompat.checkSelfPermission(this , Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission
                (this , Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
        {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},44);
            return;
        }

        //Initailize task location
        Task<Location> task = fusedLocationProviderClient.getLastLocation();
        task.addOnSuccessListener(new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                //when successs
                if(location!=null){
                    //when location is not null
                    //get current latitude
                    currentLat = location.getLatitude();
                    //get current longitude
                    currentLong = location.getLongitude();
                    //sync map
                    supportMapFragment.getMapAsync(new OnMapReadyCallback() {
                        @Override
                        public void onMapReady(@NonNull GoogleMap googleMap) {
                            //when map is ready
                            map = googleMap;
                            //zoom on current location
                            map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(currentLat,currentLong),14));

                        }
                    });

                }

            }
        });

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if(requestCode==44){
            if (grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                //when permission is granted
                //call methode
                getCurrentLocation();
            }
        }
    }

    private class Placetask extends AsyncTask<String,Integer,String> {
        @Override
        protected String doInBackground(String... strings) {
            String data ;
            try {
                //Initialize data
                data=downloadUrl(strings[0]);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }

            return data;
        }

        @Override
        protected void onPostExecute(String s) {
            //Excute parser task
            new ParserTask().execute(s);
        }
    }

    private String downloadUrl(String string) throws IOException {
        //Initialize Url
        URL url = new URL(string);
        //Initialize connection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //connect connection
        connection.connect();
        //initialize inputstream
        InputStream stream = connection.getInputStream();
        //Initialize bufferreader
        BufferedReader reader= new BufferedReader(new InputStreamReader(stream));
        //Initialize string builder
        StringBuilder builder = new StringBuilder();
        //Initailize String variable
        String line = "";
        //use while loop
        while ((line = reader.readLine())!=null){
            //append line
            builder.append(line);

        }
        //get append data
        String data = builder.toString();
        //close reader
        reader.close();
        //return data
        return data;


    }

    private class ParserTask extends AsyncTask<String,Integer, List<HashMap<String,String>>> {
        @Override
        protected List<HashMap<String, String>> doInBackground(String... strings) {
           //create jason parser
            JsonPaeser jsonPaeser = new JsonPaeser();
             //Initialize hash map list
            List<HashMap<String,String>> mapList=null;
            JSONObject object ;
            try {
                //intialize jsonobject
                object = new JSONObject(strings[0]);
                //Parse jsonobject
                mapList = jsonPaeser.parseResult(object);
            } catch (JSONException e) {
                throw new RuntimeException(e);
            }
            //return map list
            return mapList;
        }

        @Override
        protected void onPostExecute(List<HashMap<String, String>> hashMaps) {
            if (map != null) {
                map.clear();
            } else {
                // Handle the case when the GoogleMap object is null
                Log.e("GoogleMap", "GoogleMap object is null");
            }

            //clear map
           // map.clear();
            //use for loop
            for (int i=0;i<hashMaps.size();i++){
                //initialize hashmap
                HashMap<String,String> hashMapList = hashMaps.get(i);
                //get latitude
                double lat = Double.parseDouble(hashMapList.get("lat"));
                //get longitude
                double lng = Double.parseDouble(hashMapList.get("lng"));
                //get name
                String name = hashMapList.get("name");
                //concat latitude longitude
                LatLng latLng = new LatLng(lat,lng);
                //Initialize Marker Option
                MarkerOptions options = new MarkerOptions();
                //set position
                options.position(latLng);
                //set title
                options.title(name);
                //add marker option
                map.addMarker(options);

            }
        }
    }
}

JsonParser.java:-

package com.example.nearbyplacedemo;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import  java.util.HashMap;
import java.util.List;

public class JsonPaeser {
    private HashMap<String , String> parseJsonObject(JSONObject object){
        //initialize hashmap
        HashMap<String,String> datalist = new HashMap<>();
        //get name form object
        try {
            String name = object.getString("name");
            //get latitude from object
            String latitude = object.getJSONObject("geometery")
                    .getJSONObject("location").getString("lat");
            //get longitude from object
            String longitude = object.getJSONObject("geometery")
                    .getJSONObject("location").getString("lng");
            //put all value in hashmap
            datalist.put("name",name);
            datalist.put("lat",latitude);
            datalist.put("lng",longitude);

        } catch (JSONException e) {
            throw new RuntimeException(e);
        }
        return datalist;

    }
    private List<HashMap<String,String>> parseJsonArray(JSONArray jsonArray){
        //Initialize hashmap list
        List<HashMap<String,String>> datalist= new ArrayList<>();
        for (int i=0;i<jsonArray.length();i++){
            try {
                //Initialize Hashmap
                HashMap<String,String> data = parseJsonObject((JSONObject) jsonArray.get(i));
                //add data in hashmap
                datalist.add(data);
            } catch (JSONException e) {
                throw new RuntimeException(e);
            }
        }
        //retuen hashmap list
        return datalist;
    }
    public List<HashMap<String,String>> parseResult(JSONObject object){
        //initialize jsonArray
        JSONArray jsonArray ;

        try {
            //get result array
            jsonArray = object.getJSONArray("results");
        } catch (JSONException e) {
            throw new RuntimeException(e);
        }
        //return array
        return parseJsonArray(jsonArray);

    }
}

我构建了 Android 应用程序,其中查找用户当前位置,如果用户想要附近的医院、医疗机构、ATM,则选择该应用程序并显示结果。但在我的应用程序中,应用程序运行成功,但当用户输入输入应用程序时,在 logcat 中显示错误并且不显示结果

java android runtime-error
1个回答
0
投票

Круто придумано。 Мне нравится задумка

© www.soinside.com 2019 - 2024. All rights reserved.