반응형

이번 포스팅은 파일 생성 시 발생한 오류에 대하여 알아보도록 하겠습니다.



<Error>



  Invalid file name: must contain only [a-z0-9_.] 오류

 



<Solution>



  파일명 영어소문자 나 0~9까지의 숫자만 허용하는데 그 이외의 문자가 들어간 경우이므로 허용하는 문자를 제외하고 파일명을 수정



반응형
반응형

이번 포스팅은 ORACLE DB에서 Lock이 걸렸을 경우 해결방법에 대하여 알아보도록 하겠습니다.




SQL*Plus: Release 11.2.0.1.0 Production on 일 1월 19 13:15:55 2014


Copyright (c) 1982, 2010, Oracle.  All rights reserved.


사용자명 입력: eun

비밀번호 입력:

ERROR:

ORA-28000: the account is locked



사용자명 입력: sys

비밀번호 입력:


다음에 접속됨:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> --  SYS 로 접속해서 eun 의 계정 상태를 확인하니 잠겨있다.


 


  1  SELECT USERNAME, ACCOUNT_STATUS


  2        , TO_CHAR(LOCK_DATE, 'YYYMMDDHH24MI') LOCK_DATE

  3 FROM DBA_USERS WHERE USERNAME='AROINTECH';

 


USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

------------------------------ -------------------------------- ------------

EUN                                EXPIRED & LOCKED                 201401191310



SQL> ALTER USER eun ACCOUNT UNLOCK;


사용자가 변경되었습니다. 



반응형
반응형

안녕하세요.

이번 포스팅은 Android OS 10을 TargetSDKVersion 으로 업그레이드 시 파일 조회하는 기능의 경우 발생할 수 있는 오류에 대하여 알아보도록 하겠습니다.


<Error>

TargetSDKVersion을 28에서 29로 업그레이드만 하였을 뿐인데 파일 조회하는 기능에서 아래와 같은 NullPointException이 발생하였습니다.

W/System.err: java.lang.NullPointerException: Attempt to get length of null array

W/System.err:     at com.eun.sample.core.Cert.a(Unknown Source:15)

W/System.err:     at com.eun.sample.core.Cert.<init>(Unknown Source:61)


<Solution>

Android OS 10이 출시되면서 보안이 많이 강화되었으며 이로 인해 파일 Access 제한이 되었습니다.

이를 해결하기 위해서는 Android Developer 외부저장소 Access 페이지를 참조하였으며, 해결방법을 찾을 수 있었습니다.


1. 가장 간단한 방법입니다.

   AndroidMenifest.xml 파일에 requestLagacyExternalStorage 속성을 true로 주어 기존 외부 저장소를 사용할 수 있도록 설정을 합니다.

이로 인해 앞서 발생하였던 Error 부분은 해결이 되었습니다.

    <manifest ... >
     
<!-- This attribute is "false" by default on apps targeting Android 10 or higher. -->
     
<application android:requestLegacyExternalStorage="true" ... >

        ...
     
</application>
   
</manifest>

또한 아래와 같은 설명을 되어 있으니 참고 하시면 좋을 것 같습니다.

 ★ 참고: 기존 외부 저장소를 사용 설정한 상태에서 앱을 설치하면 앱은 제거될 때까지 이 모드로 유지됩니다. 이 호환성 동작은 나중에 기기가 Android 10 이상을 실행하도록 업그레이드되든, 나중에 앱이 Android 10 이상을 타겟팅하도록 업데이트되든 관계없이 적용됩니다.


2. 좀 더 보완적으로 접근할 수 있는 방법입니다.

   저장소 Access Framework를 사용하여 파일을 조회하는 방법입니다.

   우선 아래에 있는 정보 미디어 컬렉션 중 하나를 선택해 조회할 수 있습니다.

   - 사진 : MediaStore.Image 

   - 동영상 : MediaStore.Video

   - 오디오 : MediaStore.Audio

  Download 디렉토리에 있는 파일을 비롯하여 다른 앱에서 만든 다른 파일에 Acccess 하려면 앱에서 사용자가 특정 파일을 선택하도록 허용하는 

저장소 Access Framework를 사용해야 합니다.


이번 포스팅에서 Android OS 10에서 파일 조회 시 NullPointException이 발생하였을 때 해결할 수 있는 방법에 대하여 알아보았습니다.

반응형
반응형

안녕하세요.

이번 포스팅은 Data-Scheme 설정할 시 앱 서랍에 앱 아이콘이 보이지 않는 현상에 대하여 원인과 해결방법에 대하여 알아보도록 하겠습니다.


<Error>

AndroidMenifest.xml에 Data-Scheme을 사용하는 앱을 빌드하거나 APK를 설치하였지만 앱 서랍에 앱 아이콘이 보이지 않는 현상  


<Solution>

android.intent.action.MAIN action 과 android.intent.action.VIEW action을 잘못 인식하여 발생하는 오류로서 두 action을 분리시켜주면 됩니다.

간혹 android.intent.action.MAIN android.intent.action.VIEW action을 붙여쓰여 빌드 시스템에서 VIEW로 잘못 인식하게 되는 겁니다.

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

<intent-filter>

<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="sign"
android:host="eun" />
</intent-filter>


반응형
반응형

이번 포스팅은 Android Build 오류에 대하여 알아보도록 하겠습니다.


< Error>

A SQLiteConnection object for database '+data+user+0+com_example_android+databases+example_db' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.



< Solution > 

이 Build 오류의 원인은 example.db 라는 데이터베이스를 연결하여 사용을 하는데 연결 후 정상적으로 transaction이 종료가 되지 않았다는 뜻입니다. 다시 말해 메모리 상에 database 객체가 있지만 이 객체가 정상적으로 close 가 되지 않은 상태에서 로직이 진행이 되었다는 뜻입니다.


해결방법으로는 데이터베이스 연결을 한 후 일련의 작업이 끝난 후 데이터베이스를 제대로 종료를 해주면 됩니다.

db = DBHelper.getWritableDatabase(); 로 선언한 변수가 있다고 가정하여 아래와 같이 close()를 해주면 됩니다.

public void close() {

    db.close();

}

반응형

+ Recent posts