首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过意图,URL重定向在Android中不起作用-(找不到页面错误)

通过意图,URL重定向在Android中不起作用-(找不到页面错误)
EN

Stack Overflow用户
提问于 2016-01-02 10:48:59
回答 3查看 5.8K关注 0票数 16

我有这样的代码:

代码语言:javascript
复制
Button bluehost = (Button)findViewById(R.id.bluehost);
bluehost.setOnClickListener(new Button.OnClickListener()
{
    public void onClick(View v)
    {
        Intent browserIntent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("https://www.bluehost.com/track/businessplan/"));
        startActivity(browserIntent);
    }
});

从技术上讲,此代码可以将用户发送到该url,但由于某些原因,此特定的URL会转到此代码中找不到的页面,但如果您将此url放入浏览器中,则会呈现该页面。但当从应用程序中完成时,它会转到页面未找到。我正在使用Android Safari浏览器进行测试。

是因为URL上的重定向吗?我该怎么解决这个问题呢?

我的清单文件中有这一行:

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET" />

注意:

互联网连接不是问题所在。此代码适用于其他URL。这个特定的链接发生了一些奇怪的事情。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2016-01-04 12:51:41

如果你在Android Safari浏览器中得到Page not found错误,那么你可以在很多设备都有的chrome浏览器中打开链接,或者给用户选择浏览器应用程序的选项,这将在选定的浏览器中打开链接。

要打开链接到谷歌浏览器,你必须检查它是否安装在设备上。为此,您可以使用此方法检查是否安装了chrome浏览器。

代码语言:javascript
复制
private boolean isPackageInstalled(String packagename, Context context) {
     PackageManager pm = context.getPackageManager();
     try {
         pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
         return true;
     } catch (PackageManager.NameNotFoundException e) {
         return false;
     }
} 

chrome浏览器的包名是com.android.chrome。您必须使用browserIntent.setPackage("com.android.chrome");将其设置为包名称

为了向用户显示选项以选择应用程序,您可以像这样创建:

代码语言:javascript
复制
Intent chooserIntent = Intent.createChooser(browserIntent, "Select Application");
startActivity(chooserIntent);

这是你的最终代码:

代码语言:javascript
复制
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
                  Uri.parse("https://www.bluehost.com/track/businessplan/"));
boolean isChromeInstalled = isPackageInstalled("com.android.chrome", YourActivityName.this);
if (isChromeInstalled) {
    browserIntent.setPackage("com.android.chrome");
    startActivity(browserIntent);
}else{
    Intent chooserIntent = Intent.createChooser(browserIntent, "Select Application");
    startActivity(chooserIntent);
}

但请注意,如果您提供了选择浏览器应用程序的选项,那么Safari浏览器也会列出。

或者,您也可以选择使用Stephan Branczyk回答的Webview

我希望这对你有帮助。

票数 2
EN

Stack Overflow用户

发布于 2016-01-08 12:01:58

如果重定向不起作用,您的代码将在设备浏览器中打开url,问题肯定不在您的代码上。可能是因为网站中的重定向不起作用,或者您使用的浏览器无法执行此重定向。在你的情况下,我猜是你使用的浏览器不能执行重定向。

票数 0
EN

Stack Overflow用户

发布于 2016-01-06 11:45:25

代码语言:javascript
复制
Use this 

Uri uri = Uri.parse( "https://www.bluehost.com/track/businessplan/“);startActivity(Intent.createChooser(新意图(Intent.ACTION_VIEW,uri),”选择浏览器“));

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34562119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档