[컴][안드로이드] app link , url 을 click 시 내 app 이 열리도록 하는 방법

uri 클릭시 내 앱이 열리도록 / url 클릭시 내 앱이 열리도록



안드로이드에서 URL click 시 app 이 열리도록 하는 방법

방법은 간단하다.
  1. 내 app 설정 :AndroidManifest.xml 에 설정 해 주자. 열리기를 원하는 activity 에 intent-filter 를 추가하면 된다.
  2. page 에 경로 설정 : intent-filter 에 설정한 값으로 url 을 만들어서 link 에 넣는다.
  3. 내 app 에서 page 의 link 를 눌러서 app 으로 들어올때 설정 : onCreate() 등에서 link 를 통해 activity 가 열릴 때에 대한 parameter 처리를 해준다.


.html

<p><a href="denied://open/test/test2">teetet</a></p>


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest... >
    ...
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        ...
        <activity
            android:name=".views.logo.LogoActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:noHistory="true"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data android:scheme="denied" android:host="open" />
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            </intent-filter>

        </activity>
        ...

    </application>
</manifest>



LogoActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_logo)

    val logoImage = findViewById(R.id.logo_iv_logo)

    _parseUri()

}


private fun _parseUri() {
    val data:Uri? = getIntent().getData();
    if(data != null){
        val scheme = data.getScheme() // "denied"
        val host = data.getHost(); // "open"
        val params = data.getPathSegments();
        val first = params.get(0); // "test"
        val second = params.get(1); // "test2"

        val test = "$data/$scheme/$host/$params/$first/$second"
    }

}



댓글 없음:

댓글 쓰기