2014-04-24 4 views
0

학생 용도로 앱을 개발 중이며 실제 기기에서 테스트하는 동안 오류가 발견되었습니다. 여기에 내 애플 코드 조각이있다. 나는이 AsynTask를 사용하여 웹 페이지를 통해 정보를 가져오고 정상적으로 작동합니다.실제 기기를 사용하여 Android 앱에 인터넷 이미지를로드 할 수없는 이유는 무엇입니까?

protected void onPostExecute(PlaceRecord result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 

     // Refresh the values 
     ImageView imageFlag = (ImageView) findViewById(R.id.imageViewFlag); 

     try { 
      InputStream is = (InputStream) new URL(place.getFlagUrl()) 
        .getContent(); 
      Drawable d = Drawable.createFromStream(is, "src name"); 
      Log.i(TAG, "D: " + d.toString()); 
      if (d.toString() == "") { 
       imageFlag.setImageResource(R.drawable.logo_fondo); 
      } else { 
       imageFlag.setImageDrawable(d); 
      } 
     } catch (Exception e) { 
      Log.e(TAG, "que conho pasa: " + e); 
      e.printStackTrace(); 
     } TextView textVCountry = (TextView) findViewById(R.id.textViewCountryName); 
     textVCountry.setText(place.getCountryName()); 
     TextView textVPlace = (TextView) findViewById(R.id.textViewResolverPlace);  
     textVPlace.setText(place.getPlace());   

내 에뮬레이터에서 실행하면 다음과 같은 작업이 완료됩니다. 결과는 String countryName, String place 및 웹에있는 이미지의 URL 인 FlagURL을 가진 객체입니다. 에뮬레이터에서이 도구를 실행하면 이미지와 두 텍스트가 모두 완벽 해지지 만 실제 장치에서 실행할 때 (처음에는 비트 맵을 사용했지만 충돌이 발생하여 왜 그랬는지 ... 그리고 logcat 실제 장치에 대한 창 didnt giv 전자 나 많은 도움) 다음이 방법으로 그것은 충돌하지 않지만 그것을 실행하면 아무것도 표시되지 않습니다 .. 표시하는 다른 이미지에 대한 URL을 변경하면 표시 에뮬레이터에 새로운 것, 그러나 진짜 것에서.

원하는 경우 더 많은 코드를 표시 할 수 있습니다. 코드로 채우고 싶지 않습니다. 문제는

중요한 것은 내 진짜 장치가 안드로이드 4.2하지만 에뮬레이터 2.3

모든 손님을 가지고 있다는 것입니다 ... 로그 캣 창에 아무것도 보여 나던이다?

이 내 매니페스트 파일

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="advance.modelling.yourvistit" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="10" 
     android:targetSdkVersion="19" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="advance.modelling.yourvisit.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </application> 


    </manifest> 
+0

로그 고양이와 안드로이드 매니페스트의 세부 사항이 도움이 될 것입니다 –

답변

0

당신이 백그라운드 스레드에서 인터넷으로 일을해야 당신

감사드립니다. AsyncTask 클래스의 이미지를 doInBackground() 함수로 다운로드하는 코드를 이동하십시오. onPostExecute에서 이미 다운로드 한 이미지를 ImageView에 설정해야합니다 (메인 스레드에서만보기로 작업 할 수 있기 때문에)

이미지를 주 스레드로 가져 오는 것은 오래된 Android 기기에서만 작동합니다.

+0

정말 고마워요! :) – neteot