다른 앱이 자신의 앱인 Allowing Other Apps to Start Your Activity를 불러일으키도록

4766 단어
Allowing OtherApps to Start Your Activity
 
 
Android 리소스 사용은 항상 URL, URI로 설계됩니다.어떤 물건을 구체적으로 포지셔닝할 수 있다는 것을 발견하고 그들 둘의 차이를 조사해 봤다.
마찬가지로, 다른 질문: String HttpServletRequest, getRequestURI(),StringBuffer HttpServletRequest, getRequest URL ()되돌아오는 내용은 어떻게 다릅니까?왜 그랬을까?
JavaDoc를 보니까
URIS, URLs, and URNS 먼저, URI는 uniform 본 내용은 55ab 커뮤니티 Resource identifier에서 시작되었고 자원 식별자를 통일시켜 유일한 자원을 표시하는 데 사용된다.URL은 uniform resource locator로 자원 위치추적기를 통일시킨다. 이것은 구체적인 URI이다. 즉, URL은 자원을 표시할 수 있고 이 자원을 어떻게 locate하는지 가리킨다.URN, uniform resource name은 자원 이름을 통일하고 이름을 통해 자원을 표시한다. 예를 들어mailto:java-net@java.즉, URI는 하나의 추상적이고 고차원 개념으로 통일된 자원 표지를 정의하고 URL과 URN은 구체적인 자원 표지의 방식이다.URL과 URN은 모두 URI입니다.
Java의 URI에서 URI 인스턴스는 URI의 구문 규칙에 부합하는 한 절대적이거나 상대적일 수 있습니다.URL 클래스는 의미에 부합할 뿐만 아니라 이 자원을 포지셔닝하는 정보도 포함하기 때문에 상대적일 수 없고 schema가 지정되어야 한다.
더 많은 사람들이 사용하는 앱을 개발하기 위해 우리는 항상 우리의 앱이 다른 앱에 의해 호출되는 인터페이스를 제공할 수 있기를 바란다.우리가 흔히 볼 수 있는 대중의 평론과 콩잎.그들의 이런 자원이 풍부한 앱은 우리에게 많은 풍부한 자원을 제공할 수 있다.
예를 들어 콩잎의 안드로이드 Manifext.xml의 scheme:
           
 
<activity android:name="com.douban.movie.PlayVideoActivity" >

    <intent-filter>

        <action android:name="com.douban.movie" >
        </action>

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

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

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

        <data
            android:host="movie.douban.com"
            android:pathPattern="/trailer/.*/"
            android:scheme="http" >
        </data>
    </intent-filter>

</activity>

 
 
 
주로 다음과 같은 정의를 내렸습니다.
 
android:name="android.intent.category.BROWSABLE"  

<data

     android:scheme="http"

     android:host="movie.douban.com"

     android:pathPattern="/trailer/.*/"

> 

</data>

 

<data

     android:scheme="http"

     android:host="movie.douban.com"

     android:pathPattern="/trailer/.*/"

> 

</data>

 


 
 
사용자의 휴대전화에 앱이 설치되어 있지 않으면 제3자 앱이 Scheme 점프를 사용해야 한다면 오류가 발생할 수 있다는 것을 알고 있습니다.
이렇게 되면 우리의 일반적인 해결 방법은 바로 웹 페이지의 응용 프로그램으로 넘어가는 것이다.
따라서 Scheme를 Url과 같은 형식으로 작성하여 응용 프로그램 내의 이동과 웹 페이지의 이동을 편리하게 합니다.
 
물론 대중의 평론처럼 따로 쓸 수도 있다.
 
String id = "3102397";

                    try

                    {

                        Uri url = Uri.parse("dianping://shopinfo?id=" + id);

                        Intent intent = new Intent(Intent.ACTION_VIEW, url);

                        mContext.startActivity(intent);

                    }

                    catch (Exception e)

                    {

                        //       ,    HTML5 

                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.dianping.com/shop/" + id));

                        mContext.startActivity(intent);

                    }String id = "3102397";

                    try

                    {

                        Uri url = Uri.parse("dianping://shopinfo?id=" + id);

                        Intent intent = new Intent(Intent.ACTION_VIEW, url);

                        mContext.startActivity(intent);

                    }

                    catch (Exception e)

                    {

                        //       ,    HTML5 

                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.dianping.com/shop/" + id));

                        mContext.startActivity(intent);

                    }


 
 
물론Activity에 들어간 후 Uri류를 처리하고 path를 얻으면 해당하는 매개 변수 전달을 할 수 있고 서로 다른 인터페이스로 넘어갈 수 있다
     Uri uri = getIntent().getData();
        uri.getPath();

 
 
 
첨부에 자기가 쓴 sheme의 demo가 올라왔어요. 잘 모르시면 보셔도 돼요.
 
demo http://download.csdn.net/detail/yzzst/6216457

좋은 웹페이지 즐겨찾기