5

解释起来会有点烦人,但请耐心等待:

所以我有一个带有按钮的简单 android 应用程序,一个打开一个 facebook 页面(首先检查该应用程序是否已安装,并将在其中打开,否则将在浏览器中打开相同的页面),另一个在浏览器中打开一个网站 url

我遇到的问题是,它似乎不是将它们作为单独的应用程序打开,而是在我的原始应用程序中打开浏览器/fb 应用程序。

因此,如果我通过我的应用程序打开 fb 页面,然后单击返回按钮,它会将我带回到我的应用程序的主屏幕。如果我单击 fb 按钮,然后最小化应用程序,然后进入 ACTUAL fb 应用程序,它并没有改变任何内容。

所以我的应用程序实际上并没有使用独立的 fb 应用程序,只是在内部调用它。

(希望这是有道理的......)这是我使用的代码;

    //just defined button variables
    button facebook, shop;

    //now for the onCreate method

    @Override
    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    facebook = (Button) findViewById(R.id.facebook);
    shop = (Button) findViewById(R.id.shop);

    facebook.setOnClickListener(new View.onClickListener(){


    public void onClick(View v) {
    try{                                   //left out the profile id on purpose...
        Intent facebook = new Intent(Intent.ACTON_VIEW, Uri.parse("fb://profile/xxxx"));
    startActivity(facebook);

    }catch(Exception e){
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse ("http://www.facebook.com/example")));
    }
    }
    });

shop按钮设置相同,只是没有try/catch,它只会在浏览器中打开。

我如何使它将请求发送到实际的 fb 应用程序/浏览器,而不是它当前正在做什么?非常欢迎任何帮助/提示:)

4

1 回答 1

4

使用 layout/a.xml 创建新布局

打开布局文件,然后添加一个 WebView,分配一个 ID,以便您以后可以访问该小部件。

   <?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"> 

          <WebView android:id="@+id/webview" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent"/>

     </LinearLayout>

当您在应用程序中访问 INTERNET 时,在清单文件中插入权限

     <uses-permission android:name="android.permission.INTERNET" />

在新的Activity里面——>WebActivity.java

     public class WebActivity extends Activity
     {

      public void onCreate(Bundle savedInstanceState)
      { 
     super.onCreate(savedInstanceState);
     WebView mywebview = (WebView) findViewById(R.id.webview);
     WebSettings webSettings = mywebview.getSettings();
     webSettings.setJavaScriptEnabled(true); 
     mywebview.loadUrl("http://www.facebook.com");
       } 
     }

如果您想自己处理 webView 内的导航

    mywebview.setWebViewClient(new WebViewClient()) 
    private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    return false;
        }

现在从您的主要活动重定向到这些新活动::

    facebook.setOnClickListener(new View.onClickListener(){


public void onClick(View v) {
    try{
    ApplicationInfo info = getPackageManager().getApplicationInfo("com.facebook.katana", 0 );
    boolean isFacebookInstalled = true;
        }
   catch( PackageManager.NameNotFoundException e ){
                    isFacebookInstalled=false;
              }

  if(isFacebookInstalled)
   {
       //start the facebook app
        Intent intent = new Intent("android.intent.category.LAUNCHER");
        intent.setClassName("com.facebook.katana", "com.facebook.katana.LoginActivity");
        startActivity(intent);
   }
 else
   {
    Intent facebook = new Intent(getApplicationContext(),WebActivity.class);
    startActivity(facebook);
   }
});

同样,您也可以为您的商店按钮插入

于 2013-01-03T09:51:03.900 回答