Как открыть профиль в приложении Facebook из приложения Android - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь установить прослушиватель при нажатии на ImageView, который откроет приложение Facebook на определенной странице.Переменная 'facebook' содержит URL-адрес страницы Facebook, которую я хочу открыть. Мой код для прослушивателя при нажатии выглядит следующим образом:

            imgFb.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if (facebook != null) {
                        Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
                        String facebookUrl = getFacebookPageURL(context);
                        facebookIntent.setData(Uri.parse(facebookUrl));
                        startActivity(facebookIntent);
                    }
                }
            });

, а метод getFacebookUrl () выглядит следующим образом:

//Open club's Facebook page
        public String getFacebookPageURL(Context context) {
            PackageManager packageManager = context.getPackageManager();
            try {
                int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
                if (versionCode >= 3002850) { //newer versions of fb app
                    return "fb://facewebmodal/f?href=" + facebook;
                } else { //older versions of fb app
                    return "fb://page/" + facebook;
                }
            } catch (PackageManager.NameNotFoundException e) {
                return facebook; //normal web url
            }
        }

Этот код не работает для меня.У меня есть исключения нулевого указателя в следующих двух строках: PackageManager packageManager = context.getPackageManager();

String facebookUrl = getFacebookPageURL(context);

Я думаю, что это как-то связано с переменной контекста.Я не очень понимаю это, и я не уверен, что именно поставить на место, поэтому я использовал код Откройте страницу Facebook в приложении Facebook (если установлено) на Android .Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 10 февраля 2019

Я думаю, что Вы не объявляете свой контекст в основном теле, Вы должны добавить,

context=getApplicationContext(); 

или

context=YourActivity.this;

к вашему телу.

Это работает для меня.

Button btn;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn=(Button)findViewById(R.id.btn);
    context=getApplicationContext();
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (isAppInstalled()) {
                Toast.makeText(getApplicationContext(), "facebook app already installed", Toast.LENGTH_SHORT).show();
                Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
                String facebookUrl = getFacebookPageURL(context);
                facebookIntent.setData(Uri.parse(facebookUrl));
                startActivity(facebookIntent);

            } else {
                Toast.makeText(getApplicationContext(), "facebook app not installing", Toast.LENGTH_SHORT).show();
            }



        }
    });
}
public static String FACEBOOK_URL = "https://www.facebook.com/YourPageName";
public static String FACEBOOK_PAGE_ID = "YourPageName";

//method to get the right URL to use in the intent
public String getFacebookPageURL(Context context) {
    PackageManager packageManager = context.getPackageManager();
    try {
        int versionCode = packageManager.getPackageInfo("com.facebook.orca", 0).versionCode;
        if (versionCode >= 3002850) { //newer versions of fb app
            return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
        } else { //older versions of fb app
            return "fb://page/" + FACEBOOK_PAGE_ID;
        }
    } catch (PackageManager.NameNotFoundException e) {
        return FACEBOOK_URL; //normal web url
    }
}



public boolean isAppInstalled() {
    try {
        getApplicationContext().getPackageManager().getApplicationInfo("com.facebook.katana", 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

}

...