我正在重新学习Java,并且在某些情况下我会遇到ctx
这个词。特别是在Android代码中。
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应用程序打开,但是空白页面并没有加载任何其他内容
答案 0 :(得分:1)
自getPackageManager()
is a method on Context
以来,大概ctx
指的是Context
的实例。例如,Activity
是Context
。