我正在使用Android ICS的启动器,但我有平板电脑的问题.
我无法隐藏状态栏.我在Android 2.3.X中尝试过它没关系.问题仅出现在Android 4.0中.
我怎么能隐藏它?
我的应用有系统权限.它将在固件内部,现在它位于/ system/app
我能用这篇文章静静地安装应用程序
以编程方式安装/卸载APK(PackageManager vs Intents)
有用的示例应用程序
http://paulononaka.wordpress.com/2011/07/02/how-to-install-a-application-in-background-on-android/
但我仍然无法以相同的方式卸载应用程序.我尝试使用像安装示例中的反射.
public ApplicationManager(Context context) throws SecurityException, NoSuchMethodException {
observer = new PackageInstallObserver();
pm = context.getPackageManager();
Class<?>[] types = new Class[] {Uri.class, IPackageInstallObserver.class, int.class, String.class};
Class<?>[] uninstalltypes = new Class[] {String.class, IPackageInstallObserver.class, int.class};
method = pm.getClass().getMethod("installPackage", types);
uninstallmethod = pm.getClass().getMethod("deletePackage", uninstalltypes);
}
public void uninstallPackage(String packagename) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
uninstallmethod.invoke(pm, new Object[] {packagename, observer, 0});
}
public void installPackage(Uri apkFile) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
method.invoke(pm, new Object[] {apkFile, observer, INSTALL_REPLACE_EXISTING, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Ubuntu Linux上构建冰淇淋三明治模拟器.
获得以下错误:
host C++: libGLcommon <= development/tools/emulator/opengl/host/libs/
Translator/GLcommon/GLDispatch.cpp
development/tools/emulator/opengl/host/libs/Translator/GLcommon/
GLDispatch.cpp:22:20: error: GL/glx.h: No such file or directory
development/tools/emulator/opengl/host/libs/Translator/GLcommon/
GLDispatch.cpp: In function ‘void (* getGLFuncAddress(const char*))
()’:
development/tools/emulator/opengl/host/libs/Translator/GLcommon/
GLDispatch.cpp:35: error: ‘glXGetProcAddress’ was not declared in this
scope
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/
libGLcommon_intermediates/GLDispatch.o] Error 1
make: *** Waiting for unfinished jobs....
Run Code Online (Sandbox Code Playgroud)
有人可以帮我这个吗?
因为在我考虑将问题和解决方案发布到此处之前,我找不到任何报告此行为的人,因此它可以帮助其他有此问题的人.我们的应用程序在ICS之前的设备上运行良好.我们在Galaxy Nexus和ICS模拟器上测试了我们的应用程序,并看到了以下类型的奇怪进程崩溃:
dlmalloc中的堆内存损坏
在dlfree中堆积记忆腐败
信号11(SIGSEGV),故障地址deadbaad
问题是崩溃发生在原生空间中,因此没有任何自编代码直接影响它.由于我们在列表中处理了大量图像,并且系统为这些图像分配了位图,因此唯一想到的是一些不好的位图处理.我们遵循网络上的所有最佳实践,甚至帮助GC通过调用收集不需要的资源bitmap.recycle().无论如何,由于某种未知的原因,该应用程序在Android ICS 4.0上不断崩溃.
我遇到了以下问题.当任何位图从资源由冰淇淋三明治运行的应用程序加载时,它可能会被不正确地,如果它已经被解码的格式,这不同于当前窗口的格式,在没有施加抖动呈现.但是,解码格式和窗口格式都已明确设置:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGBA_8888;
Run Code Online (Sandbox Code Playgroud)
和
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
Run Code Online (Sandbox Code Playgroud)
以下是从使用ICS 4.0.3的仿真器上运行的本文中获取的测试应用程序的屏幕截图(它在HTC HD2上提供相同的结果):
RGBA_8888(32位)窗口格式,各种位图解码格式:

RGB_565(16位)窗口格式,各种位图解码格式:

有几点可以注意到:
RGB_565;RGB_565 窗口格式和RGBA_8888 位图解码格式出现唯一好看的渐变.在这些问题中也报告了这个问题,但仍然没有找到解决方案:
渐变兼容性问题 - ICS默认的颜色比以前的所有Android版本都少
该quistion是,如何处理所有这些格式在ICS,更准确地说,如何使ICS负载与位图RGBA_8888格式,以及如何设置窗口格式RGBA_8888,以便这些位图显示正确?
在Honeycomb中,我能够使用TYPE_SYSTEM_OVERLAY创建系统覆盖,并使用FLAG_WATCH_OUTSIDE_TOUCH接收触摸.
现在ICS改变了一些东西.我仍然可以创建系统覆盖,但我无法接触.
现在,我能够使用TYPE_SYSTEM_ALERT创建相同的内容并获取触摸,但它只是捕获touchevents,而不是像Honeycomb那样传递它们.
有任何想法吗?
亲切的问候
android layoutparams android-windowmanager android-4.0-ice-cream-sandwich
我的活动包含此代码以获取SD卡上的所有图像:
String[] projection = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.ImageColumns.DATA};
Cursor cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, null, null,
MediaStore.Images.Media._ID);
int count = cursor.getCount();
int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
int i;
for(i = 0; i < count; i++) {
cursor.moveToPosition(i);
String p = cursor.getString(image_path_index);
fd.addToPhonePhoto(p);
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)
活动恢复时发生的事件:
03-14 14:06:48.380:E/AndroidRuntime(20793):java.lang.RuntimeException:无法恢复活动{}:java.lang.RuntimeException:无法恢复活动{}:android.database.StaleDataException:Attempted to关闭后访问游标.
它只发生在Android 4.0上.如果在Android 2.x或3.x上,它可以正常工作.但是,如果我更改了在"开发者选项"中选择"不保留活动"选项的系统设置.错误未显示.
我想修改我的代码以避免此错误而不更改系统设置.我该怎么办?
我试图定期(每秒几次)在屏幕上闪烁不同的颜色.
要更改颜色,我Drawable.setColorFilter(int color, Mode mode)在主视图的背景上使用:
myView.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.SRC);出于调试目的,我添加了另一个我改变使用的视图 View.setBackgroundColor(int color).
该问题是,setColorFilter()呼叫工作棒棒糖,但在以前的版本中碎(具体的Nexus 7 v4.4.4,Galaxy Nexus的V4.2.1).
我把颜色改变代码称为一个Runnable由a定期触发的代码Handler.
在所有平台上调用处理程序(我可以看到由于调试setBackgroundColor()调用而导致的后台更改).
以下是颜色循环代码:
Handler mHandler;
RunnableOnTick thisRunnable;
View vDebug;
View vBroken;
class RunnableOnTick implements Runnable
{
int backgroundColor;
@Override
public void run()
{
color = random.nextInt(2);
switch (color)
{
case 0:
{
backgroundColor = Color.RED;
break;
}
case 1:
{
backgroundColor = Color.GREEN;
break;
}
}
// this works …Run Code Online (Sandbox Code Playgroud) 目标是拦截来自耳机的广播以及最终的蓝牙,以响应来自耳机的不同类型的点击以改变媒体播放器.此解决方案适用于ICS之前的所有版本.这是我尝试过的一些代码和事情:
....
private BroadcastReceiver mediaButtonReceiver = new MediaButtonIntentReceiver();
....
public void onCreate() {
...
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(2147483647); // this is bad...I know
this.registerReceiver(mediaButtonReceiver, mediaFilter);
...
}
public class MediaButtonIntentReceiver extends BroadcastReceiver {
private KeyEvent event;
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
try {
int action = event.getAction();
switch(action) {
case KeyEvent.ACTION_UP …Run Code Online (Sandbox Code Playgroud) android media-player android-intent android-4.0-ice-cream-sandwich
我正在探索Android的VpnService的功能.目前,我通过在用户空间重建IP堆栈构建了一个非常基本的请求转发器:我从VpnService的输入流中读取IP数据包,解析它们,对于我不想转发的连接,我尝试重新创建那些VPN连接外部的套接字连接.
我已经明白最后一点是通过VpnService.protect()以下方式实现的:
Socket socket = new Socket();
vpnService.protect(socket);
socket.connect(new InetSocketAddress(
header.getDestinationAddress(), // From my IP datagram header
body.getDestinationPort())); // From the TCP datagram header
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方法导致VPN接口的环回.
虽然上面的代码只是阻塞并最终超时,但我通过Socket.connect(InetSocketAddress)从一个单独的线程调用来观察环回; 连接直接返回到我的VpnService的输入流,并重复该过程.
不用说,这会导致循环.我觉得这样做的原因是在创建套接字时(以及随后的调用VpnService.protect(Socket)),我还没有设置目标IP和端口.
这似乎确实如此,因为通过覆盖VpnService.protect(Socket)和 VpnService.protect(int)我的VpnService实现并在两种情况下调用超级都返回false.
如何正确保护套接字连接?
sockets vpn android packet-capture android-4.0-ice-cream-sandwich
android ×10
android-4.0-ice-cream-sandwich ×10
bitmap ×1
build ×1
cursor ×1
drawable ×1
emulation ×1
heap ×1
layoutparams ×1
media-player ×1
sockets ×1
statusbar ×1
vpn ×1