如何将位于第三方应用程序或浏览器的URL(如whatsapp消息)直接打开到我的webview应用程序中?

时间:2017-06-21 01:12:31

标签: android facebook url webview external

我有一个博客,我只使用Webview制作了它的应用版本。问题是:我想通过其他应用程序分享我的帖子,比如发送一条whatsapp消息或一封电子邮件给某个链接到我博客上特定帖子的人(比如www.blogspot.myblog.com/2017/postexample) ,然后可以选择用我的应用程序打开这个,就像Facebook一样,甚至是Youtube。 我做了这个:

            <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="mywebsite.com"
                android:pathPrefix="/"
                android:scheme="http" />
            <data
                android:host="www.mywebsite.com"
                android:pathPrefix="/"
                android:scheme="http" />
        </intent-filter> 

它确实启动了我的应用程序,但(当然)它会打开应用程序的默认页面,而不是www.blogspot.myblog.com/2017/postexample,那么我应该怎么做才能直接打开已发送的URL?谢谢大家,非常感谢帮助。

修改

现在是我的代码:

        <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:scheme="http"
                android:host="www.blog.com"
                android:pathPrefix="/" />
        </intent-filter>
    </activity>

活动

public class BlogActivity extends AppCompatActivity {
private static final String TAG = "BlogActivity";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();

    //Get the link from that Uri
    if (data != null) {
        Log.d(TAG, "Data" + data.toString());

        WebView  WebView2 = (WebView)findViewById(R.id.web1);
        WebView2.setWebViewClient(new WebViewClient());
        WebView2.loadData(TAG, "text/html; charset=utf-8", "UTF-8");
        WebSettings webSettings =  WebView2.getSettings();
        webSettings.setJavaScriptEnabled(true);
    }
}

}

1 个答案:

答案 0 :(得分:1)

查看:https://developer.android.com/training/app-indexing/deep-linking.html

从以上链接:

  

系统通过意图过滤器启动您的活动后,您可以使用Intent提供的数据来确定需要呈现的内容。调用getData()和getAction()方法来检索与传入的Intent关联的数据和操作。您可以在活动的生命周期中随时调用这些方法,但通常应该在早期回调期间执行此操作,例如onCreate()或onStart()。

     

这是一个片段,展示了如何从Intent中检索数据:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();

    //Get the link from that Uri
    if(data != null) {
        Log.d(TAG, "Data" + data.toString());
    }
}