2016-12-06 4 views
0

우 돌비 시연 후 간단한 응용 프로그램이 있습니다 : https://classroom.udacity.com/courses/ud853. 여기에 소스 코드 : https://github.com/ionutincau/Vremea.APK를 설치할 때만 오류가 발생합니다.

USB 디버깅 모드 (Android Studio의 실행 옵션)를 통해 앱을 설치하면 정상적으로 작동하지만 'APK 빌드'하고 빌드 된 APK를 설치하면 앱이 다운됩니다.

인터넷에 연결되어 있지만 http://api.openweathermap.org에서 데이터를 가져 오려고하면 Connection Error java.io.FileNotFoundException이라는 URL이 표시됩니다. 내가 설정을 열 때, 나는 얻을 :

FATAL EXCEPTION: main 
Process: com.example.ionut.vremea2, PID: 6850 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.ionut.vremea2/com.example.ionut.vremea2.SettingsActivity}: java.lang.IllegalAccessException: 

APK 파일에서 응용 프로그램을 설치 한 경우에만 나는 오류를 얻을

SettingsActivity

class SettingsActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 
    } 
} 

나는이 코드를 사용하고 인터넷에서 데이터 가져 오기 :

protected String[] doInBackground(String... params) { 
     if (params.length == 0) { 
      return null; 
     } 

     HttpURLConnection urlConnection = null; 
     BufferedReader reader = null; 
     String forecastJsonStr = null; 

     String format = "json"; 
     String units = "metric"; 
     int numDays = 7; 
     String api_key = "my_key"; // I have a valid code in my app 

     try { 
      // Construct the URL for the OpenWeatherMap query 
      final String FORECAST_BASE_URL = "http://api.openweathermap.org/data/2.5/forecast/daily?"; 
      final String QUERY_PARAM = "id"; 
      final String FORMAT_PARAM = "mode"; 
      final String UNITS_PARAM = "units"; 
      final String DAYS_PARAM = "cnt"; 
      final String APPID_PARAM = "APPID"; 

      // Construct the URL for the OpenWeatherMap query 
      Uri builtUri = Uri.parse(FORECAST_BASE_URL).buildUpon() 
        .appendQueryParameter(QUERY_PARAM, params[0]) 
        .appendQueryParameter(FORMAT_PARAM, format) 
        .appendQueryParameter(UNITS_PARAM, units) 
        .appendQueryParameter(DAYS_PARAM, Integer.toString(numDays)) 
        .appendQueryParameter(APPID_PARAM, api_key) 
        .build(); 

      URL url = new URL(builtUri.toString()); 

      // Create the request to OpenWeatherMap, and open the connection 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.connect(); 

      // Read the input stream into a String 
      InputStream inputStream = urlConnection.getInputStream(); 
      // ... do something 
+0

관련 코드 표시. –

+0

소스 코드는 https://github.com/ionutincau/Vremea에 있습니다. – WhiteShadow

답변

0

활동을 만드는 데있어서의 흠은 자신의 수업을 공개해야하기 때문입니다. { "대구": "502", "메시지": "오류 : 찾을 수 없음 도시"} 브라우저에서 링크를 열고 실제 응답을 볼 수 있습니다 filenotfound를 들어

public class SettingsActivity extends Activity { 
} 

적절한 응답을 얻도록 구성해야하지만 HttpURLConnection.HTTP_OK에 대한 urlConnection.getResponseCode()를 확인하여 오류 응답을 처리해야합니다. 실패한 경우 urlConnection.getResponseMessage() 또는 urlConnection.getErrorStream() 스트림에 대한 자세한 정보를 얻을 수 있습니다.

if (urlConnection.getResposeCode() == HttpURLConnection.HTTP_OK) { 
... 
} else { 
... 
} 
관련 문제