什么是`ctx`以及它是如何使用的?

时间:2016-05-25 15:37:32

标签: java android

我正在重新学习Java,并且在某些情况下我会遇到ctx这个词。特别是在Android代码中。

Example from here:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void goToFb (View view) {
        startActivity(newFacebookIntent(this.getPackageManager(), "http://facebook.com/biddingo"));

    /**
     * <p>Intent to open the official Facebook app. If the Facebook app is not installed then the
     * default web browser will be used.</p>
     *
     * <p>Example usage:</p>
     *
     * {@code newFacebookIntent(ctx.getPackageManager(), "https://www.facebook.com/JRummyApps");}
     *
     * @param pm
     *     The {@link PackageManager}.
     * @param url
     *     The full URL to the Facebook page or profile.
     * @return An intent that will open the Facebook page/profile.
     */
    public static Intent newFacebookIntent(PackageManager pm, String url){
        Uri uri = Uri.parse(url);
        try {
            ApplicationInfo applicationInfo = pm.getApplicationInfo("com.facebook.katana", 0);
            if (applicationInfo.enabled) {
                // https://stackoverflow.com/a/24547437/1048340
                uri = Uri.parse("fb://facewebmodal/f?href=" + url);
            }
        } catch (PackageManager.NameNotFoundException ignored) {
        }
        return new Intent(Intent.ACTION_VIEW, uri);
    }
}

我的代码出错,无法在任何地方找到任何相关信息。

它是某种占位符吗?

修改ctx替换this似乎可以防止出现错误消息,但似乎无法正确修复代码。 Facebook应用程序打开,但是空白页面并没有加载任何其他内容

1 个答案:

答案 0 :(得分:1)

getPackageManager() is a method on Context以来,大概ctx指的是Context的实例。例如,ActivityContext