Твиттер-карта не обнаруживает 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);
}
}
}