티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Intercepting links from the browser to open my Android app

브라우저 링크를 가로채서 Android 앱에서 열기

 문제 내용 

I'd like to be able to prompt my app to open a link when user clicks on an URL of a given pattern instead of allowing the browser to open it. This could be when the user is on a web page in the browser or in an email client or within a WebView in a freshly-minted app.

브라우저에서 링크를 클릭하면 브라우저가 열지 않고 주어진 패턴의 URL을 클릭하면 앱을 열도록 프롬프트하고 싶습니다. 이는 사용자가 브라우저의 웹 페이지, 이메일 클라이언트 또는 새롭게 만든 앱의 WebView에 있을 때 발생할 수 있습니다.

 

For example, click on a YouTube link from anywhere in the phone and you'll be given the chance to open the YouTube app.

예를 들어, 전화기의 어디에서든 YouTube 링크를 클릭하면 YouTube 앱을 열 수 있습니다.

 

How do I achieve this for my own app?

어떻게 하면 제 앱에서 이것을 구현할 수 있을까요?

 

 

 

 높은 점수를 받은 Solution 

Use an android.intent.action.VIEW of category android.intent.category.BROWSABLE.

android.intent.action.VIEW, android.intent.category.BROWSABLE의 카테고리를 사용합니다.

 

From Romain Guy's Photostream app's AndroidManifest.xml,

Romain Guy의 Photostream 앱의 AndroidManifest.xml에서,
    <activity
        android:name=".PhotostreamActivity"
        android:label="@string/application_name">

        <!-- ... -->            

        <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="http"
                  android:host="flickr.com"
                  android:pathPrefix="/photos/" />
            <data android:scheme="http"
                  android:host="www.flickr.com"
                  android:pathPrefix="/photos/" />
        </intent-filter>
    </activity>

 

Once inside you're in the activity, you need to look for the action, and then do something with the URL you've been handed. The Intent.getData() method gives you a Uri.

액티비티 안으로 들어간 후, 액션을 찾아 전달받은 URL을 처리해야 합니다. Intent.getData() 메소드를 사용하면 Uri를 얻을 수 있습니다.
    final Intent intent = getIntent();
    final String action = intent.getAction();

    if (Intent.ACTION_VIEW.equals(action)) {
        final List<String> segments = intent.getData().getPathSegments();
        if (segments.size() > 1) {
            mUsername = segments.get(1);
        }
    }

 

It should be noted, however, that this app is getting a little bit out of date (1.2), so you may find there are better ways of achieving this.

그러나 이 앱이 조금 오래되었기 때문에(1.2), 이를 구현하기 위한 더 나은 방법이 있을 수 있다는 것을 참고해야 합니다.

 

 

 

출처 : https://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app

반응형
댓글
공지사항
최근에 올라온 글