Твиттер-карта не обнаруживает URL на Android

Привет, я пытался сделать мое приложение для Android способным открывать определенные типы ссылок, размещенных в твиттере (Twitter-карты). Проблема, с которой я сталкиваюсь, заключается в том, что если ссылка, размещенная в твиттере, имеет вид http://example.com/ и если параметр pathprefix не указан в манифесте Android, то кнопка на карточке отображает текст "открыть в приложении", а когда вы нажимаете по ссылке открывается диалоговое окно, в котором мое приложение является одним из селекторов, когда в манифесте не указан параметр pathprefix, но если ссылка http://example.com/pqr а pathprefix - /pqr, то " "открыть в приложении" текст не отображается, а текст "открыть в браузере" отображается на кнопке, и когда я пытаюсь открыть ссылку в браузере, отображается диалоговое окно выбора, содержащее мое приложение. Таким образом, мое приложение может открывать ссылку в приложении, когда оно открывается из браузера, но не напрямую из твиттер-карты. Я не могу обнаружить какие-либо недостатки в коде и нуждаюсь в помощи. Я написал следующий код в манифесте Android и java-файле Twittercardcontent:

<activity
        android:name="com.package.TwitterCardContent"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="@string/twittercardtitle"
        android:screenOrientation="portrait" >
        <intent-filter android:label="@string/twittercardtitle">
            <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:scheme="http" android:host="example.com" android:pathPrefix="/pqr" ></data>
        </intent-filter>
</activity>

Деятельность:

public class TwitterCardContent extends SherlockActivity{
private WebView webview;
ActionBar actionBar;
ProgressBar aboutWebProg;

@Override
protected void onCreate(Bundle savedInstanceState) {
    Uri uri = getIntent().getData();
    URL url= null;
    try {
        Toast.makeText(this, uri.getScheme()+ " " +uri.getHost()+ " " +uri.getPath(), Toast.LENGTH_SHORT).show();

        url = new URL(uri.getScheme(), uri.getHost(), uri.getPath());
        Toast.makeText(this, url.toString(), Toast.LENGTH_SHORT).show();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

    setContentView(R.layout.twittercard);
    webview = (WebView) findViewById(R.id.webviewdata);

    super.onCreate(savedInstanceState);

    actionBar=getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    aboutWebProg=(ProgressBar)findViewById(R.id.aboutWebProg);
    webview.setWebViewClient(new MyWebViewClient());

    /*
    webview.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            return true;
        }
    });
    */
    //webview.setLongClickable(false);
    if (url != null)
        webview.loadUrl(url.toString());
}

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onLoadResource(WebView  view, String  url){

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        aboutWebProg.setVisibility(View.GONE);
        super.onPageFinished(view, url);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        aboutWebProg.setVisibility(View.VISIBLE);
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl) {
        // TODO Auto-generated method stub
        aboutWebProg.setVisibility(View.GONE);
        super.onReceivedError(view, errorCode, description, failingUrl);
    }
}    

}

0 ответов

Другие вопросы по тегам