Android pdf链接从TextView打开在谷歌文档查看器



我被这个问题困扰了好几天。我正在制作的应用程序,可以阅读由wordpress网站生成的rss新闻。一些帖子有外部pdf文件的链接,我需要从我的应用程序在谷歌文档查看器打开这些文件。我成功地在TextView和Html中解析新闻(fromHtml…)和SetMovementh显示可点击的链接并点燃浏览器。问题是当链接有。pdf文件时,它们被下载,但是,如预期的那样,默认情况下不能打开。我需要一些方法,可以所有链接(href)以。pdf结尾,从TextView,使用谷歌文档查看器打开,例如:... 如果url isEnding(.pdf),则使用GogleDocs打开,否则常规打开url…

public class ShowDetails extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.details);
        TextView detailsTitle = (TextView)findViewById(R.id.detailstitle);
        TextView detailsPubdate = (TextView)findViewById(R.id.detailspubdate);
        TextView detailsSadrzajPosta = (TextView)findViewById(R.id.detailssadrzaj_posta);
        TextView detailsLink = (TextView)findViewById(R.id.detailslink);
        Bundle bundle = this.getIntent().getExtras();
        detailsTitle.setText(bundle.getString("keyTitle"));
        detailsPubdate.setText(bundle.getString("keyPubdate"));
        detailsSadrzajPosta.setText(Html.fromHtml(bundle.getString("keySadrzajPosta")));
        detailsSadrzajPosta.setMovementMethod(LinkMovementMethod.getInstance());
    }
}

和my detail.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/detailstitle" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/detailspubdate" />
   <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/detailssadrzaj_posta"
        />
   <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:autoLink="web"
        android:id="@+id/detailslink" /> 
</LinearLayout>

在google文档查看器中查看pdf(复制自:https://www.b4x.com/android/forum/threads/intent-for-drive-pdf-viewer.53268/):

Private i As Intent
i.Initialize(i.ACTION_VIEW, "file:///" & File.DirDefaultExternal & "/myPDF.pdf")
i.SetComponent("com.google.android.apps.docs/com.google.android.apps.viewer.PdfViewerActivity")
StartActivity(i)

要覆盖TextView的链接行为,您需要使用Spannable并将TextView中现有的链接(URLSpan)替换为您自己的ClickableSpan。或者更简单的使用库Textoo。

结合两者,解决方案看起来像:

TextView textViewWithLinks = Textoo
    .config((TextView) findViewById(R.id.my_text_view))
    .addLinksHandler(new LinksHandler() {
        @Override
        public boolean onClick(View view, String url) {
            if (url.endsWith(".pdf")) {
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                i.setClassName("com.google.android.apps.docs", "com.google.android.apps.viewer.PdfViewerActivity");
                startActivity(i);
                return true;
            } else {
                return false;
            }
        }
    })
    .apply();

最新更新