2014-09-03 17 views
5

Khi người dùng mở một trang web Tôi muốn một trong hai trường hợp sau đây được xảy ra:Chuyển hướng đến Ứng dụng Android từ một trang web?

  1. Nếu mycoolapp ứng dụng được cài đặt chuyển hướng người dùng đến các ứng dụng bằng cách sử dụng tùy chỉnh chương trình url mycoolapp: //
  2. Nếu ứng dụng không được cài đặt, hãy lưu lại trên trang hiện tại mà không cần đăng hoặc chuyển hướng đến trang không xác định hoặc cửa sổ bật lên lỗi.

Trường hợp 1 là dễ dàng, bạn có thể sử dụng đoạn mã sau:

window.location = "mycoolapp://"; 

Điều này sẽ có tác dụng nếu ứng dụng được cài đặt trên thiết bị. Khi ứng dụng không được cài đặt, nó sẽ chuyển hướng người dùng đến một trang trống không xác định.

Đối với trường hợp 2, tôi có giải pháp sử dụng iFrame hoạt động tốt trên iOS và trên trình duyệt Android gốc. Nó không hoạt động trên Chrome dành cho Android.

var redirect = function (location) { 
    var iframe = document.createElement('iframe'); 
    iframe.setAttribute('src', location); 
    iframe.setAttribute('width', '1px'); 
    iframe.setAttribute('height', '1px'); 
    iframe.setAttribute('position', 'absolute'); 
    iframe.setAttribute('top', '0'); 
    iframe.setAttribute('left', '0'); 
    document.documentElement.appendChild(iframe); 
    iframe.parentNode.removeChild(iframe); 
    iframe = null; 
};  

redirect('mycoolapp://'); 

Khi ứng dụng được cài đặt nó đang hoạt động trên trình duyệt Android gốc, nhưng trên Chrome dành cho Android, không có chuyển hướng. Không có gì xảy ra trên trang.

Tôi làm cách nào để chuyển hướng đến ứng dụng của mình hoạt động trên Chrome dành cho Android mà không cần chuyển hướng đến trang trống khi ứng dụng chưa được cài đặt?

Edit: Tôi biết rằng bạn có thể sử dụng Intent

window.location = "intent://#Intent;package=com.mycoolapp;scheme=mycoolapp;launchFlags=268435456;end;"; 

Đây không phải là những gì tôi muốn vì nó sẽ khởi động trang ứng dụng trên google play nếu ứng dụng không được cài đặt. Có cách nào mà nó sẽ không chuyển hướng đến google play?

+0

trên android không sử dụng "đặc biệt" chương trình ... sử dụng chương trình http trong bộ lọc Ý định ... trình duyệt sẽ hỏi người dùng hoàn thành hành động bằng trình duyệt hoặc với ứng dụng của bạn (nếu được cài đặt) – Selvin

+0

@Selvin Bạn có thể đăng câu trả lời cho ý tưởng của mình không? – confile

+0

nó giống như câu trả lời của RGraham – Selvin

Trả lời

4

Bạn không cần để khởi chạy ứng dụng của mình trên giao thức tùy chỉnh. Nó sẽ hoạt động cho bất kỳ địa chỉ nào, ví dụ: trong AndroidManifest.xml của bạn:

<intent-filter> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:host="www.mycoolapp.com" /> 
    <data android:scheme="http" /> 
    <data android:pathPattern="/Android" /> 
</intent-filter> 

Điều này có nghĩa bạn có thể hướng người dùng sử dụng:

window.location = "/Android"; 

Nếu ứng dụng được cài đặt, Android sẽ nhắc đến "Open With". Nếu không, người dùng sẽ chỉ được đưa đến trang/Android trong trình duyệt của họ.

+0

Tôi sử dụng url tùy chỉnh vì tôi sử dụng cùng một lược đồ url cho iOs điều này giúp mọi việc dễ dàng hơn nhiều. – confile

+0

@confile Thực hiện nhanh trình duyệt-sniff. Sử dụng những gì bạn có cho iOS và trên cho Android. – CodingIntrigue

+0

nếu ứng dụng không được cài đặt window.location = "/ Android"; sẽ mở một trang trống trong trình duyệt. Đây không phải là điều tôi muốn. Nếu ứng dụng không được cài đặt, người dùng phải ở trang hiện tại. – confile

0
Add this in manifest file,note the scheme. 

     <intent-filter> 
      <data android:scheme="startci" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 

trong html cung cấp mã, lược đồ giống như trong tệp kê khai.

<a href="intent:#Intent;scheme=startci;package=gramener.star;end">click here</a> 

nếu bạn muốn thêm tham số để ứng dụng của bạn sử dụng này

<a href="intent:#Intent;scheme=startci://open?url_param=hi santhosh;package=gramener.star;end">click here</a> 

nếu ứng dụng không được cài đặt vì vậy nếu bạn muốn chuyển hướng đến một số trang khác thêm url dự phòng như thế này.url phải được mã hóa

<a href="intent:#Intent;scheme=startci://open?url_param=hi santhosh;package=gramener.star;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">click here</a> 

để có được những tham số thêm mã dưới đây

Uri data = this.getIntent().getData(); 
    if (data != null && data.isHierarchical()) { 
     if (data.getQueryParameter("url_param") != null) { 
      String param = data.getQueryParameter("url_param");    
      Log.d("the param is",param); 
       //do something here 
     } 
    } 
+0

đây là nút đang hoạt động, nó bắt đầu ứng dụng từ đầu tiên ... –

Các vấn đề liên quan