好的,我看到很多人只是通过说
来解雇这个问题“它是为OS组件保留的”
“它需要访问来源”
我可以访问源代码,我可以将我想要的任何应用程序或小部件设置为系统应用程序。那么现在我将如何让我的小部件在右侧显示其通知?
编辑: 好的人正朝着错误的方向前进。 。 看看你的手机。 。你一直看到手机右侧的Wi-Fi信号和手机信号。我希望我的信号也能显示在那里。 。 。以及系统信号。 。我公司正在制造的平板电脑中有一个新的硬件芯片,我必须像电话信号那样不断显示其信号强度。它将被整合到平板电脑的Android源中。
答案 0 :(得分:7)
您可能需要参考手机状态栏的Android源代码代码,https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r3.1/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
看看像
这样的方法addIcon
updateIcon
removeIcon
这不是一件容易的事,因为你必须自己添加很多东西。
答案 1 :(得分:2)
您需要修改几个地方:
framework / base / core / res / res / values / config.xml,在以下位置添加一个插槽:
<string-array name="config_statusBarIcons">
然后是frameworks / base / packages / SystemUI / src / com / android / systemui / statusbar / phone / PhoneStatusBarPolicy.java:
mService.setIcon("<your slot name>", R.drawable.yourlogo, 0, null);
mService.setIconVisibility("<your slot name>", setVisible);
这主要是它,我相信你可以通过一些试验和错误自行找出其余部分。
答案 2 :(得分:0)
我有一个简单的想法,即:
在manifest声明android屏幕方向为landscape 并设计像肖像模式的风景 所以你的应用程序在横向模式下看起来像。
答案 3 :(得分:-1)
public class GCMIntentService extends GCMBaseIntentService {
public static final String PROJECT_ID = "4898989797";
private static final String TAG = "GCMIntentService";
ModelNotificationMessage modelNotificationMessage;
public GCMIntentService() {
super(PROJECT_ID);
Log.d(TAG, "GCMIntentService init");
}
@Override
protected void onError(Context ctx, String sError) {
// TODO Auto-generated method stub
Log.d(TAG, "Error: " + sError);
}
@Override
protected void onMessage(Context ctx, Intent intent) {
Log.d(TAG, "Message Received");
String message = intent.getStringExtra("message");
Log.d(TAG, "Message Received" + message);
sendNotification(message);
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("GCM_RECEIVED_ACTION");
broadcastIntent.putExtra("gcm", message);
ctx.sendBroadcast(broadcastIntent);
}
private void sendNotification(String message) {
// this
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.notification;
CharSequence tickerText = message; // ticker-text
long when = System.currentTimeMillis();
Context context = getApplicationContext();
CharSequence contentTitle = modelNotificationMessage.getKey();
CharSequence contentText = message;
Intent notificationIntent = null;
int NOTIFICATION_ID = 9999;
NOTIFICATION_ID = CommonVariable.notification_message;
notificationIntent = new Intent(this, ViewMessages.class);
contentText = arrayList.get(0).getDescription();
tickerText = arrayList.get(0).getDescription();
// and this
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
Notification notification = new Notification(icon, tickerText, when);
// Play default notification sound
notification.defaults |= Notification.DEFAULT_SOUND;
notification.setLatestEventInfo(context, contentTitle, contentText,
contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, notification);
}
答案 4 :(得分:-1)