Java 如何在Android中获取PackageManager
我有一个正在清除缓存的应用程序,但我不知道如何让Java 如何在Android中获取PackageManager,java,android,Java,Android,我有一个正在清除缓存的应用程序,但我不知道如何让getPackageManager在片段中工作。 这是我的密码。任何帮助都将不胜感激。我对android和java非常陌生。多谢各位 public class Cache extends SherlockFragment { Button cache; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bu
getPackageManager
在片段中工作。
这是我的密码。任何帮助都将不胜感激。我对android和java非常陌生。多谢各位
public class Cache extends SherlockFragment {
Button cache;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.cache, null);
cache = (Button) view.findViewById(R.id.button3);
cache.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Cache is Cleared", Toast.LENGTH_SHORT).show();
PackageManager pm = getPackageManager();
// Get all methods on the PackageManager
java.lang.reflect.Method[] methods = pm.getClass().getDeclaredMethods();
for (java.lang.reflect.Method m : methods) {
if (m.getName().equals("freeStorageAndNotify")) {
// Found the method I want to use
try {
long desiredFreeStorage = Long.MAX_VALUE; // Request for free space
m.invoke(pm, desiredFreeStorage , null);
} catch (Exception e) {
// Method invocation failed. Could be a permission problem
}
break;
}
}
}
private PackageManager getPackageManager() {
// TODO Auto-generated method stub
return null;
}});
return view;
}
}
您应该能够通过
getActivity()
访问getPackageManager()
例如getActivity().getPackageManager()
Kotlin扩展解决方案
在代码中的某个位置添加以下内容:
val Fragment.packageManager get() = activity?.packageManager
然后直接在片段代码中使用packageManager
packageManager?.resolveActivity(intent, 0)
// or
fragment.packageManager?.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)