가장 기본적인 것을 잊고 있었다.


Manifest 파일에서 Activity 선언 시,



<activity android:name=".PlayerActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="landscape">




android:configChanges="orientation|keyboardHidden|screenSize"


위 코드를 삽입해야, 가로 세로 전환 시 액티비티가 재 생성되지 않게 된다.





참조 : https://developer.android.com/guide/topics/resources/runtime-changes.html?hl=ko#RetainingAnObject



'안드로이드 > TIP' 카테고리의 다른 글

Aapt2Exception  (0) 2017.11.27
Memory leak 을 유발하는 Handler 의 사용  (0) 2017.11.07
HttpUrlConnection 세션  (0) 2017.10.18
단순히 특정앱만 호출하자!  (0) 2017.09.27
앱 에서 앱 으로 호출  (0) 2017.09.27
Posted by 자바리즘
,

안드로이드 HttpUrlConnection 을 사용할 경우, 세션 관리를 해주지 않는다고 한다.


세션이 걸려있는 URL 인 경우, 쿠키값 셋팅을 통해 세션을 획득해야 한다.



URL url = new URL(_url);

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();


String cookieString = CookieManager.getInstance().getCookie("세션받아올 URL");

if (cookieString != null) {

//세션을 위한 쿠키값 셋팅

urlConn.setRequestProperty("Cookie", cookieString);

}



후, 오래 삽질 할 뻔 했다 ^^;

Posted by 자바리즘
,

데이터 전달 없이 단순히 앱에서 특정앱을 호출해보자.

간단하다.



호출하려는 앱의 패키지명을 넣어주면 끝


Intent intent = getPackageManager().getLaunchIntentForPackage("패키지명");
startActivity(intent);


'안드로이드 > TIP' 카테고리의 다른 글

가로 세로 전환 시, 액티비티 재 생성되는 문제  (0) 2017.10.26
HttpUrlConnection 세션  (0) 2017.10.18
앱 에서 앱 으로 호출  (0) 2017.09.27
안드로이드 미러링 앱  (0) 2017.09.18
Keystore 정보 숨기기  (0) 2017.08.18
Posted by 자바리즘
,

앱에서 다른 앱 실행 시 값 전달하는 방법



앱에서 '어떤 앱' 을 호출 해야 될 때가 있다. 단순히 호출만이 아니라, 데이터를 전달하면서

호출할 때가 분명히 발생한다!




<호출하는 앱 코드>

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("custom://main?url=http://www.daum.net"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
    |Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);






<호출받는 앱 코드>


onCreate onResume 등에서 Intent 를 받아오자.

if (Intent.ACTION_VIEW.equals(intent.getAction())) {
	Uri uri = intent.getData();

	if (String.valueOf(uri).startsWith("custom")) {
		//TODO 원하는 작업 실행
               String url = uri.getQueryParameter("url");
	}
}






<호출받는 앱 매니페스트>

매니페스트에서 스키마 선언이 중요하다.

custom://main  이런식으로 호출 하기 위해서는 scheme 과 host 정의가 필요하다.


	
	    
	    
	    
	     
	


'안드로이드 > TIP' 카테고리의 다른 글

HttpUrlConnection 세션  (0) 2017.10.18
단순히 특정앱만 호출하자!  (0) 2017.09.27
안드로이드 미러링 앱  (0) 2017.09.18
Keystore 정보 숨기기  (0) 2017.08.18
build.gradle lintOptions  (0) 2017.08.18
Posted by 자바리즘
,

Vysor



1) 크롬 웹스토어에서 Vysor검색 후, 설치

  https://chrome.google.com/webstore/search/Vysor?hl=ko

 


 

 


 



2) 안드로이드 단말기가 연결 되어 있다면, 바로 인식하고, 현재 단말기 화면을 PC 로 미러링 해준다.


  아이폰도 가능하며, 실시간으로 PC 와 단말기를 미러링 해준다.







간혹, 광고가 뜰 때가 있습니다..광고를 안볼려면 구매를 해야 하네요...

'안드로이드 > TIP' 카테고리의 다른 글

단순히 특정앱만 호출하자!  (0) 2017.09.27
앱 에서 앱 으로 호출  (0) 2017.09.27
Keystore 정보 숨기기  (0) 2017.08.18
build.gradle lintOptions  (0) 2017.08.18
키스토어 정보 알아내기  (0) 2017.08.17
Posted by 자바리즘
,

http://classyshark.com/



ClassyShark 사이트에서 .jar 파일 다운로드 를 받는다.


이것은 프로젝트에 jar 파일 추가해서 사용하는 것은 아니고, 자바 에서 실행한 후, 클래시샤크 프로그램에서 apk 파일 등을 선택하여 사용한다.


어떤 라이브러리들로 이루어져 있는지, 용량, 메소드 카운트, 프로가드가 잘 적용되었는지를 확인할 수있다.



적용범위 : .dex .aar .so .apk .jar .class




<실행명령어>


java -jar ClassyShark.jar


java 명령어 사용을 위해서는 jdk 설치가 되어있어야 하며, 환경변수도 잡아주셔야 사용하기 편리합니다.





Posted by 자바리즘
,

함수는 fun 으로 정의



fun sum(a: Int, b: Int): Int {

return a + b

}



자바문법 : int

코틀린    : Int


첫번째를 대문자로 해야 인식 한다.


; (세미콜론) 을 안붙여도 된다. 오히려 붙이면, 안드로이드 스튜디오에서 '경고' 를 내뱉는다.





변수의 정의


val = 읽기전용 변수

val a:Int = 1

val b = 2

b = 3  // > 컴파일 오류. 값을 셋팅하고, 변경하면 안된다.


var = Mutable 변수 (변경 가능한 변수)

var x = 5;

x += 5;





문자열 템플릿


더블쿼테이션 안에 $ 달러 뒤에 변수명을 붙히면 변수값을 인식을 하게 된다.

println 함수로 콘솔 창에 문자열을 출력할 수 있다.

var str = "안녕"
val greeting = "$str 하세요"

println(greeting)




조건문



if( a > b ) {

//TODO

} else { 

//TODO

}





Nullable


값이 null 일 수 있는 경우 리턴타입에 ? (물음표)를 넣어야 합니다.

fun getString(str: String) : String? {

if(str == "1") {
return "One"
} else {
return "Other"
}

return null
}




Range


fun checkRange() {

val x = 3
if(x in 1..10) // 3이 포함되므로 아래 문구 출력함
println("$x fits in range")

for(x in 3..5) //3부터 5까지 출력
print(x)

}


Posted by 자바리즘
,