【发布时间】:2013-12-31 04:10:49
【问题描述】:
我正在尝试构建一个库,只要包含在应用程序项目中,它就会在系统托盘上弹出persistent notification。我制作了一个正常的应用程序并在运行良好的设备上对其进行了测试。现在,我已经将该项目转换为库并将该库引用到 android 项目。
这是我的MainActivity,它被命名为库项目的SearchBar:
public class SearchBar extends Activity {
NotificationManager nm;
public static String PACKAGE_NAME;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_bar);
PACKAGE_NAME = getApplicationContext().getPackageName();
}
public void searchBar() {
Notification notification = new Notification(R.drawable.ic_stat_notify,
"STest", System.currentTimeMillis());
RemoteViews contentView = new RemoteViews(PACKAGE_NAME,
R.layout.persistent_notification_layout);
notification.contentView = contentView;
Intent notificationIntent = new Intent();
notificationIntent.setClassName("com.example.searchbar",
"com.example.searchbar.SearchAutoSuggest");
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
nm = (NotificationManager) getSystemService(SearchBar.NOTIFICATION_SERVICE);
notification.flags |= Notification.FLAG_NO_CLEAR;
notification.flags |= Notification.FLAG_ONGOING_EVENT;
PendingIntent contentIntent = PendingIntent.getActivity(this, 2,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
notification.contentIntent = contentIntent;
nm.notify(AppSingleton.NOTIFICATION_ID_ALWAYS, notification);
}
}
而且,我将这个库调用到我的 testProject's MainActivity 中,如下所示:
public class MainActivity extends Activity {
SearchBar notification;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notification = new SearchBar();
notification.searchBar();
}
}
现在,当我运行我的 testProject 时,我收到错误消息:
Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
at android.app.Activity.getSystemService(Activity.java:4463)
at com.example.searchbar.SearchBar.searchBar(SearchBar.java:43)
at com.example.libtest.MainActivity.onCreate(MainActivity.java:19)
开启:
nm = (NotificationManager) getSystemService(SearchBar.NOTIFICATION_SERVICE);
我尝试/搜索了几个东西,但没有一个能帮助我解决问题。 我究竟做错了什么?任何形式的帮助将不胜感激。
【问题讨论】:
标签: java android eclipse android-library