2016-12-06 13 views
0

udacityチュートリアル:https://classroom.udacity.com/courses/ud853の後に簡単なアプリケーションを作成しました。 ソースコードはhttps://github.com/ionutincau/Vremeaです。APKをインストールしたときのエラー

私はUSBデバッグモード(Androidスタジオで実行オプション)でアプリをインストールすると問題なく動作しますが、「APKをビルド」してビルドしたapkをインストールするとアプリがクラッシュします。

私はインターネット接続を持っていますが、http://api.openweathermap.orgからデータを取得しようとすると、私はURL Connection Error java.io.FileNotFoundExceptionを取得します。そして、私は私が手設定を開こうとすると:

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 { 
... 
} 
関連する問題