delphi xe7 android 指定浏览器打开网页

procedure TForm1.btn3Click(Sender: TObject);
  var
    Intent:JIntent;
   // Intent:TJIntent; 这两个看似一样,其实很容易解理错;
begin
//  方法1.
// 函数 StrToJURI('http://www.baidu.com/') 效果等同 TJnet_Uri.JavaClass.parse(StringToJString('网址'));

// Intent := TJIntent.JavaClass.init(StringToJString('类名'),TJnet_Uri.JavaClass.parse(StringToJString('网址')));
  Intent := TJIntent.JavaClass.init(StringToJString('com.android.browser.Browser.Activity'),TJnet_Uri.JavaClass.parse(StringToJString('http://www.baidu.com/')));
  Intent.setPackage(StringToJString('com.android.browser')); //设置包名;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  //以上3句要一起使用,否则会报错;

//  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,TJnet_Uri.JavaClass.parse(StringToJString('http://www.baidu.com/')));
//  Intent.setPackage(StringToJString('com.android.browser')); //设置包名;
//  这两句貌似不需要设置应用的类名就可以打开网址了;电脑太卡机了,没法一一测试;

// 上面3句的道理都是一样的。

//  方法2.
//  Intent := TJIntent.JavaClass.init(StringToJString('com.android.browser'));
//  Intent := TJIntent.Create;

// 以上3句效果都是一样的;
 // Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); //如果没有这句的话,下面的 setData 语句就无法执行了;
//  Intent.setData(StrToJURI('http://www.sogou.com/'));

//  Intent.setFlags();
//  Intent.addCategory();  以上两句,感觉可有可无,没有它们,一样可以打开网页;
//  Intent.putExtra(); 好像在两个活动界面中传递数参用的;参考资料:http://bbs.csdn.net/topics/370172520
//  Intent.setComponent(); 还有这个,设置第3方应用的包名和类名,从而打开第3方应用;

//  Intent.setDataAndType(StrToJURI('http://www.sogou.com/'),StringToJString('text/html')); //这句的第2个参数未知;

  SharedActivityContext.startActivity(Intent);  //这里最好try一下,有可能会报错。 比如说你的MIME类型是打开邮箱,但是你手机里面没装邮箱客户端,就会报错。
//  SharedActivity.startActivity(Intent); //和上面一句效果一样的;

//总结:方法1.简单易用;方法2.灵活多变;
end;

 

posted @ 2017-11-02 13:49  stma  阅读(1111)  评论(0)    收藏  举报