[英]How to run startActivity from outside of the main activity
我有一个具有NotificationsListener
的MainActivity
类(单独的类)。 出现通知时,它将调用我的gethtml
类。 它们都扩展了Activity
但是gethtml
类中的startActivity
不起作用...(如果我在MainActivity
复制并测试此代码,则可以正常工作)...任何人都知道为什么它不起作用吗?
这是主要的类:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter();
filter.addAction("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
startService(new Intent(MainActivity.this, NLService.class));
Intent intent=new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
这是通知侦听器:
public class NLService extends NotificationListenerService {
@Override
public void onCreate() {
super.onCreate();
IntentFilter filter = new IntentFilter();
filter.addAction("com.kpbird.nlsexample.NOTIFICATION_LISTENER_SERVICE_EXAMPLE");
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
new Thread(new Runnable() {
public void run(){
Looper.prepare();
int cangethtml = 1;
try{
if(cangethtml==1){
cangethtml = 0; //only runs once
new html();
}
}finally{Looper.loop();}
};
}).start();
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {}
}
这是最后的课程,不会通过startActivity
打开网站:
public class html extends Activity{
public html() {
try {
Intent i2 = new Intent("android.intent.action.MAIN");
i2.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main"));
i2.addCategory("android.intent.category.LAUNCHER");
i2.setData(Uri.parse("https://wwww.google.com"));
startActivity(i2);
} finally{}
}
}
您需要活动的上下文。 startActivity
将在Activity
的上下文中调用。
参考开发者论坛:
你应该写
Context.startActivity(i2);
代替
startActivity(i2);
另外,请确保您不要忘记在程序包的AndroidManifest.xml
有相应的<activity>
声明。
例如:在AndroidManifest.xml
检查您定义的所有类。 你有:
<activity android:name="packageName.className"/>
如果您的html
类未在AndroidManifest.xml
定义,则无法访问其中定义的方法和布局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.