Android는 URL Scheme을 사용하여 APP를 환기시킵니다.

6904 단어
현재 인터넷의 발전과 같이 단일 앱이나 단일 플랫폼은 회사 업무의 수요를 만족시키기 어렵고 다중 플랫폼의 합작이나 협력은 대세의 추세이다.그리고 앞으로 IT 비즈니스의 발전 추세는 반드시 평화롭고 공유화된 방향으로 발전해야 한다.플랫폼에 대한 업무 의존도 갈수록 강해질 것이다.플랫폼 간의 데이터 교환과 공유는 필연적인 일이다.
멀리 떨어져 앱 자체로 시선을 돌렸다.서로 다른 APP 간에도 데이터 상호작용이 필요하다.밤을 들고 간단하게 URL Scheme.
만약에 이런 장면이 있다면 회사가 업무의 발전으로 인해 앱 사용자가 앱에서 실명 인증을 해야 한다. 알리페이 플랫폼에서 깨알 실명 인증 기능을 제공해야 한다.그러면 앱은 알리페이 앱을 환기시켜 실명인증을 하고 실명인증이 끝난 후 알리페이가 실명인증 결과를 되돌려야 한다.이로써 서로 다른 앱 간의 데이터 상호작용을 완성했다.
URL Scheme:
안드로이드의 scheme는 페이지 내 점프 프로토콜로 매우 좋은 실현 메커니즘으로 자신의 scheme 프로토콜을 정의함으로써 앱의 각 페이지를 점프하는 데 매우 편리하다.scheme 프로토콜을 통해 서버는 앱이 그 페이지를 점프하는 것을 맞춤형으로 알려줄 수 있고 알림 표시줄 메시지를 통해 페이지를 맞춤형으로 점프할 수 있으며 H5페이지를 통해 페이지를 점프할 수 있다.
URL Scheme 프로토콜 형식:
  1:
http://baidu:8080/news?system=pc&id=45464

  2:
alipays://platformapi/startapp?appId=20000067

http Scheme 프로토콜
baidu는 어느 주소역에 작용하는지 대표합니다
8080은 경로의 포트 번호를 나타냅니다.
news는 Scheme에서 지정한 페이지를 나타냅니다.
시스템과 id는 전달할 매개 변수를 대표합니다
URL Scheme 사용 방법:
먼저 Mainifest 파일에 시작할 activity에 필터를 추가합니다.
<activity
    android:name="com.example.helloworld.MainActivity">
    
        
        
    
    
    
    

 
activity에서 매개변수를 수신하려면 다음과 같이 하십시오.
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        String scheme = intent.getScheme();
        String dataString = intent.getDataString();
        Uri uri = intent.getData();
        System.out.println("scheme:" + scheme);
        if (uri != null) {
            //   url  
            String url = uri.toString();
            //scheme  
            String schemes = uri.getScheme();
            //host  
            String host = uri.getHost();
            //port  
            int port = uri.getPort();
            //    
            String path = uri.getPath();
            //    
            String path1 = uri.getEncodedPath();
            //query  
            String queryString = uri.getQuery();
            //     
            String systemInfo = uri.getQueryParameter("system");
       String id=uri.
getQueryParameter("id"); 
       System.out.println(
"host:" + host);
       System.out.println(
"dataString:" + dataString);
       System.out.println(
"id:" + id);
       System.out.println(
"path:" + path);
       System.out.println(
"path1:" + path1);
       System.out.println(
"queryString:" + queryString);
    }
  }
}

호출 방법:
웹 페이지 호출
test

native 호출
if (hasApplication()) {
Intent action = new Intent(Intent.ACTION_VIEW);
StringBuilder builder = new StringBuilder();
builder.append("http://baidu:8080/news?system=pc&id=45464");
action.setData(Uri.parse(builder.toString()));
startActivity(action);
}


/**
*          
* @return true      
*/
private boolean hasApplication() {
        PackageManager manager = mContext.getPackageManager();
        Intent action = new Intent(Intent.ACTION_VIEW);
        action.setData(Uri.parse("http://"));
        List list = manager.queryIntentActivities(action, PackageManager.GET_RESOLVED_FILTER);
        return list != null && list.size() > 0;
    }

 
전재 대상:https://www.cnblogs.com/zhang-cb/p/7093769.html

좋은 웹페이지 즐겨찾기