所以我正在尝试在我的AccessibilityService
内启动另一个应用程序但是我继续得到以下java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
,即使我在MainActivity.class
中使用相同的方法也可以。我知道包名是正确的,因为我说我在MainActivity.class
这是我调用该函数的类。
public class myAdapter extends Application
{
private void turnOn(String text)
{
Intent b = getPackageManager().getLaunchIntentForPackage(text);
startActivity(b);
}
}
我尝试了各种方法来调用同一个函数。
Intent b = getApplicationContext().getgetPackageManager().getLaunchIntentForPackage(appName);
getApplicationContext().startActivity(b);
Intent b = getApplicationContext().getgetPackageManager().getLaunchIntentForPackage(appName);
getApplicationContext().startActivity(b);
我的Logcat:
Process: com.tech.myApp, PID: 17195
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:106)
at com.tech.myApp.turnOn(myAdapter.java:198)
答案 0 :(得分:0)
您说您尝试从Activity
开始AccessibilityService
,但您的代码非常清楚地表明您的班级正在扩展Application
。这很令人困惑,也可能是您对这些NullPointerExceptions
的核心问题之一。我将根据你的问题描述中提到的AccessibilityService
类来尝试这个问题,我会说明我的答案,即使这与你发布的代码有很大冲突。如果确实如此,您应该更新此问题以澄清。如果这个答案对您没有帮助,那么您的问题需要大量的TLC。
一旦我们意识到我们处于AccessibilityService
之内,我们就会发现有一种更简单的方法来完成一项活动。在Activity
中开始另一个AccessibilityService
就像下面的代码片段一样简单:
public class A11yService extends AccessibilityService {
void startMainActivityFromService() {
final Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
这很容易!
答案 1 :(得分:-1)
好的,我必须要做的就是在 Document doc = Jsoup.connect(url).get();
Element time = doc.select("li").get(1);
String text = time.text();
创建一个静态上下文。然后,我可以从任何其他类中提取,甚至是在后台运行的类。
MainActivity.class
然后在我的其他课程或活动或服务中,我使用它:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MainActivity.context = getApplicationContext();
// CALL MY FUCTION - THIS COULD BE ANYWHERE NOW
startApp(app name you want to start);
}
}