5

これを説明するのは少し面倒ですが、ご容赦ください。

だから私はボタン付きのシンプルなアンドロイドアプリを持っています.1つはFacebookページを開きます(最初にアプリがインストールされているかどうかを確認し、そこで開きます.そうでなければブラウザで同じページを開きます),もう1つはブラウザでウェブサイトのURLを開きます

私が抱えている問題は、それらを個別のアプリケーションとして開くのではなく、元のアプリ内でブラウザー/fb アプリを開いているように見えることです。

したがって、アプリから fb ページを開いて [戻る] ボタンをクリックすると、アプリのホーム画面に戻ります。fb ボタンをクリックしてアプリを最小化し、実際の 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")));
    }
    }
    });

ショップ ボタンは同じように設定されていますが、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>

アプリケーションでインターネットにアクセスしているので、マニフェスト ファイルにアクセス許可を挿入します。

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

新しいアクティビティの内部 -->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 に答える