2017-10-21 1 views
0

WebView 앱을 만들었으므로 딥 링크가 작동합니다. 다른 사용자가 내 웹 사이트 링크를 클릭 할 때마다 내 앱이 열리지 만 클릭 한 URL 대신 홈페이지가로드됩니다. 홈페이지 대신 링크를 클릭 할 때마다 내 웹 사이트의 정확한 URL이 열리길 원합니다.딥 링크를 사용하면 앱이 열리지 만 정확한 URL은 열리지 않습니다.

MainActivity.java

package com.yoalfaaz.yoalfaaz; 

     import android.content.Intent; 
     import android.os.Bundle; 
     import android.support.design.widget.FloatingActionButton; 
     import android.support.design.widget.Snackbar; 
     import android.support.v4.widget.SwipeRefreshLayout; 
     import android.support.v7.app.AppCompatActivity; 
     import android.support.v7.widget.ShareActionProvider; 
     import android.support.v7.widget.Toolbar; 
     import android.view.View; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.webkit.WebSettings; 
     import android.webkit.WebView; 
     import android.webkit.WebViewClient; 
     import android.support.v4.view.MenuItemCompat; 

public class MainActivity extends AppCompatActivity { 
    private WebView YoWeb; 
    private ShareActionProvider mShareActionProvider; 

    SwipeRefreshLayout swipe; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     YoWeb = (WebView)findViewById(R.id.webview); // Move your declaration up here 
     swipe = (SwipeRefreshLayout) findViewById(R.id.swiperefresh); 
     swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       LoadWeb(YoWeb.getUrl()); // Pass in the current url to refresh 
      } 
     }); 

     LoadWeb("https://www.yoalfaaz.com"); // load the home page only once 
    } 

    public void LoadWeb(String url) // Pass in URL you want to load 
    { 

     WebSettings webSettings = YoWeb.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     YoWeb.loadUrl(url); // Load the URL passed into the method 
     swipe.setRefreshing(true); 
     YoWeb.setWebViewClient(new WebViewClient() { 

      //onPageFinished Method 
      public void onPageFinished(WebView view, String url) { 
       //Hide the SwipeRefreshLayout 
       swipe.setRefreshing(false); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     if (YoWeb.canGoBack()) { 
      YoWeb.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     switch (item.getItemId()) { 
      case R.id.action_settings: 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate menu resource file. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 

     // Locate MenuItem with ShareActionProvider 
     MenuItem item = menu.findItem(R.id.menu_item_share); 

     // Fetch and store ShareActionProvider 
     mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 

     // Return true to display menu 
     return true; 
    } 

    // Call to update the share intent 
    private void setShareIntent(Intent shareIntent) { 
     if (mShareActionProvider != null) { 
      mShareActionProvider.setShareIntent(shareIntent); 
     } 
    } 

    //private Intent setShareIntent() { 
    // Intent shareIntent = new Intent(); 
    // shareIntent.setAction(Intent.ACTION_SEND); 
    // shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); 
    // shareIntent.setType("text/plain"); 
    // startActivity(shareIntent); 
    // return shareIntent; 
    //} 
} 

의 AndroidManifest.xml은

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.yoalfaaz.yoalfaaz"> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <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:host="www.yoalfaaz.com" android:scheme="https"/> 
      </intent-filter> 
     </activity> 
     <activity android:name=".SplashScreen"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

방법은 대부분의 다른 응용 프로그램과 함께 작동으로 작동하게하는? WhatsApp에서 YouTube 링크를 클릭하는 것처럼 특정 동영상은 YouTube 홈페이지 대신 YouTube 앱에서 열립니다.

+0

LoadWeb ("https://www.yoalfaaz.com"); // 한 번만 홈 페이지를로드합니다 .'. 글쎄 그게 당신의 홈페이지 isnt 열립니다? – greenapps

+0

@greenapps 예, 내 홈페이지가 열립니다. 그것은 내 웹 사이트의 웹 페이지에서 새로 고침 할 때마다 스 와이프 할 때마다 홈페이지로 돌아와서 끝났기 때문입니다. –

+0

'누군가 다른 웹 사이트 링크를 클릭 할 때마다 (어떤 앱에서든)'어떤 앱입니까? 당신은 어떤 브라우저 앱을 의미합니까? – greenapps

답변

0
LoadWeb("https://www.yoalfaaz.com"); // load the home page only once 

대신 URL을 하드 코딩, 다른 응용 프로그램에서 클릭는 (a string 등) URL을 얻을 수 getIntent().getData().toString()를 사용하여 웹보기를로드하기 위해 URL을 사용합니다.

getData()에서 수신 된 URL이없는 경우 null을 확인하고 기본 URL을로드하십시오.

희망이 도움이됩니다. 당신이 당신의 코드에서 =====================

요청대로

========= 코드를 보여 수정 됨 이 줄이있는 웹보기를로드하고 있습니다.

LoadWeb("https://www.yoalfaaz.com"); // load the home page only once 

아래와 같이 수정하십시오.

String url = "https://www.yoalfaaz.com"; 
if(null != getIntent().getData()){ 
url = getIntent().getData().toString(); 
} 
LoadWeb(url); 
+0

URL을 문자열로 가져오고 내가하는 것처럼이 코드를 작성하는 방법을 정확하게 말할 수 있습니까? –

+0

수정 된 답변 코드를 작성하여 URL을받는 방법을 보여줍니다. 봐. – GRK

관련 문제