[Android] PopupWindow Sample

하루 종일 PopupWindow 때문에 고생했다.

인터넷에 검색해서 소스를 전부 적용해 봐도 계속 exception이 떨어졌다.

원인은 소스의 문제가 아니라 팝업을 띄우는 시점 때문이었다.

onCreate 내에서 팝업을 띄우려고 했는데,

무조건 lifecycle 이후에 띄워야 된단다.

http://stackoverflow.com/questions/4187673/problems-creating-a-popup-window-in-android-activity

위 사이트에 onCreate에 넣을 경우 방법이 나와 있다.


showAtLocation 이 함수의 첫번째 파라미터가 parent View 인데

lifecycle 완료 전에는 이 parent view를 못 찾기 때문인거 같다.





Posted by incree

2012/02/16 02:16 2012/02/16 02:16
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/98

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

xcode 4.2 에서 아이폰 앱 개발 중에 다음과 같은 에러가 발생했다.


warning: Unable to read symbols for /Users/incree/Library/Developer/Xcode/iOS DeviceSupport/4.3 (8F190)/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader (file not found).

warning: No copy of AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader found locally, reading from memory on remote device.  This may slow down the debug session.

iOs 5.x 기기들에서는 정상 작동하는데, 4.x 버젼의 기기들에서 에러가 발생(3.x는 테스트 못함)

UITabBarController, UIWebView 등을 사용한 앱인데

원인과 해결방안을 구글과 맥부기에서 검색해보니

http://stackoverflow.com/questions/5974056/unable-to-read-symbols-warning-after-updating-to-4-3-3

http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Fclubid=16914752%26page=1%26menuid=0%26inCafeSearch=true%26searchBy=0%26query=AccessibilitySettingsLoader%26includeAll=%26exclude=%26include=%26exact=%26searchdate=all%26media=0%26sortBy=date%26articleid=170452%26referrerAllArticles=true

와 같은 내용이 있었지만...

해결되지 않았다.

디버깅을 해보니 UITabBarController 의 viewWillAppear에 있는 코드가 실행이 안되고 있었다

탭바 예제를 보고(어딘지 기억안남) viewWillAppear에 탭바에 포함될 view들을 초기화 하는 코드를 넣어두었는데, 여기에서 문제가 발생을 했다.

이 코드들을 전부 viewDidLoad로 옮기니 정상적으로 작동했다.

실력이 딸려서 왜 그런지는 모른다.

끝까지 확인해 봐야함이 마땅하나 귀차니즘으로 패스


Posted by incree

2012/02/09 11:28 2012/02/09 11:28
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/96

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[HTML & CSS] Firefox에서 css import

firefox에서 css import는 css 파일 제일 상단에 해줘야 함

아래에 넣으면 ie는 인식하는데 firefox는 인식못함

멍미

Posted by incree

2012/02/08 16:30 2012/02/08 16:30
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/95

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[iPhone] 말풍선 구현방법

http://vimeo.com/8718829

카톡 같은 말풍선


http://mobiforge.com/developing/story/sms-bubble-ui-iphone-apps


http://weimenglee.blogspot.com/2010/07/source-code-for-bubble-ui-project.html

Posted by incree

2012/01/31 19:01 2012/01/31 19:01
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/93

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[iPhone] 아이콘 만들기

http://itunes.apple.com/us/app/iconify/id416289784?mt=12

Posted by incree

2012/01/29 09:26 2012/01/29 09:26
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/92

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[iPhone] Custom UIActivityIndicatorView

https://github.com/jdg/MBProgressHUD

http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html

http://www.developers-life.com/custom-uiactivityindicatorview.html

http://www.youtube.com/watch?v=1vWpUwz_xy4

http://iphonedevelopertips.com/user-interface/uialertview-without-buttons-please-wait-dialog.html

Posted by incree

2012/01/28 17:48 2012/01/28 17:48
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/91

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[iPhone] 멀티뷰 뷰 전환

시작하세요. 아이폰 프로그래밍 6장 예제

- (IBAction)switchViews:(id)sender

{

    [UIView beginAnimations:@"View Flip" context:nil];

    [UIView setAnimationDuration:1.25];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    

    if (self.yellowViewController.view.superview == nil)

    {

        if (self.yellowViewController == nil)

        {

            YellowViewController *yellowController =

            [[YellowViewController alloc] initWithNibName:@"YellowView" 

                                                   bundle:nil];

            self.yellowViewController = yellowController;

            [yellowController release];

        }

        [UIView setAnimationTransition:

         UIViewAnimationTransitionFlipFromRight

                               forView:self.view cache:YES];

        

        [blueViewController viewWillAppear:YES];

        [yellowViewController viewWillDisappear:YES];

        [blueViewController.view removeFromSuperview];

        [self.view insertSubview:yellowViewController.view atIndex:0];

        [yellowViewController viewDidDisappear:YES];

        [blueViewController viewDidAppear:YES];

    }

    else

    {

        if (self.blueViewController == nil)

        {

            BlueViewController *blueController =

            [[BlueViewController alloc] initWithNibName:@"BlueView" 

                                                 bundle:nil];

            self.blueViewController = blueController;

            [blueController release];

        }

        [UIView setAnimationTransition:

         UIViewAnimationTransitionFlipFromLeft

                               forView:self.view cache:YES];

        

        [yellowViewController viewWillAppear:YES];

        [blueViewController viewWillDisappear:YES];

        [yellowViewController.view removeFromSuperview];

        [self.view insertSubview:blueViewController.view atIndex:0];

        [blueViewController viewDidDisappear:YES];

        [yellowViewController viewDidAppear:YES];

    }

    [UIView commitAnimations];

}

Posted by incree

2012/01/22 19:36 2012/01/22 19:36
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/89

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

Facebook signed request 파싱하는 api가 없어서

http://www.postitcode.com/post/2991875106/facebook-java-parsing-signed-request

요기를 참고해서 만들어 봤다

입맛에 맞게 약간만 수정했음

JSONObject 는 http://www.json.org/java/index.html 여기 api



Posted by incree

2012/01/19 01:12 2012/01/19 01:12
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/88

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[Android] Cookie 버그 - WebView, HttpClient

Android에서 쿠키 공유할때(로그인 Activity -> WebView) 보통 아래와 같은 방법으로 처리한다

01    DefaultHttpClient client;
02     
03    //gets all cookies from the HttpClient's cookie jar
04    List<Cookie> cookies = client.getCookieStore().getCookies();
05     
06            if (! cookies.isEmpty()){
07     
08                CookieSyncManager.createInstance(YourContext.this);
09                CookieManager cookieManager = CookieManager.getInstance();
10     
11                            //sync all the cookies in the httpclient with the webview by generating cookie string
12                for (Cookie cookie : cookies){
13                    
14                    sessionInfo = cookie;
15        
16                        String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue() + "; domain=" + sessionInfo.getDomain();
17                        cookieManager.setCookie(YOUR_DOMAIN, cookieString);
18                        CookieSyncManager.getInstance().sync();
19                }
20            }
출처 : http://eshyu.wordpress.com/2010/06/27/syncing-cookies-between-an-httpclient-and-a-webview/


위 방식으로 예전에 개발할때는 잘 작동을 했는데,

이번 개발에서는 쿠키가 사라져 버리는 증상이 발생을 했다.

로그는 WebView를 호출한 이후에도 CookieManager에 쿠키가 남아 있었다

WebView에만 cookie가 전달이 안되는 증상이었다.

결론은 Android Cookie에 버그 때문.

Cookie 표준대로 작동안하니 버그라고 해도 될듯


Cookie 생성할때 모든 서브도메인까지 같이 적용되게 하려면

.domain.com 형식으로 도메인을 지정한다(맨 앞에 쩜 중요)


그런데 Android에서 이 형태의 도메인을 인식하지 못한다

2.1, 2.2, 2.3.3 까지 테스트 해 봤지만 모두 처리가 안됐다.

어쩔수 없이 고정 서브 도메인 하나만 지정하는 방법으로 처리했다.


일주일간 고생한걸 생각하면 ㅠㅠ.




p.s : 오늘 미국에 먼일 있나?? 오픈 소스 사이트들이 전부 이상한 안내 메시지 띄워 놓고
접속이 안되게 해놨네. 2011.01.18

Posted by incree

2012/01/18 20:30 2012/01/18 20:30
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/87

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

http://damianflannery.wordpress.com/2010/09/28/android-webview-with-https-loadurl-shows-blankempty-page/

I recently encountered this problem while trying to develop a WebView that is supported on Doughnut (1.6) and above. When presented with a https url the WebView just renders a blank page.

It seems that until Froyo, Android didn’t provide a public API to let you manually decide if you wanted to proceed to an untrusted web site via a WebView.

Note that in this case it is not even that the web site was untrusted (in the conventional sense) – it is because Thawte is not in the default list of trusted certificate authorities on Android. If you use the standard web browser on Android, the browser presents a typical warning dialog (as presented below) that enables you to accept the certificate and carry on.

Invalid certificate warning

If you are using Froyo as the target SDK then you can use:

1engine = (WebView) findViewById(R.id.my_webview);
2engine.setWebViewClient(new WebViewClient() {
3 public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
4 handler.proceed() ;
5 }
6}

However, if you are not using Froyo then it seems you are out of luck. After some research, I concluded that I had the following options:

a) intercept all page requests and forward to external web browser if url begins with https (not a clean or nice user experience and totally unnecessary for Froyo and above)
b) add certificate of website to local keystore (in this case I am serving multiple web pages and the origin of many of these is not known until runtime)
c) make Froyo the minSDK and discard previous versions of Android (not a suitable option)
d) hack and use some private apis (the option described below)

To solve this problem we have to use a private interface (not published on SDK but present in real SDK runtime). As you can see in the Android src tree, the onReceivedSslError is indeed present (and used – it simply cancels the request) in Doughnut. However, this method is not presented to us in the SDK  - it is hidden because it contains a parameter type SslError which is located in a hidden package.  Therefore, we need to copy these src files into our project so that we can access them:

1) Copy WebViewClient.java into the package “android.webkit” within your src folder.
2) Copy SslError.java into the package “android.net.http” within your src folder.

Src files

3) Since we replicated the paths to the src files in the SDK, our code to override onSslError above now works on Android 1.6.

Caution: bear in mind that we are using a private API and Google reserve the right to change private APIs at any time – though in this case it is unlikely since they’ve now made this available in Froyo.

Posted by incree

2011/12/29 10:27 2011/12/29 10:27
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/85

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

« Previous : 1 : ... 9 : 10 : 11 : 12 : 13 : 14 : 15 : Next »