标签: android-4.0-ice-cream-sandwich

在Android Ice Cream Sandwich上隐藏状态栏

我正在使用Android ICS的启动器,但我有平板电脑的问题.

我无法隐藏状态栏.我在Android 2.3.X中尝试过它没关系.问题仅出现在Android 4.0中.

我怎么能隐藏它?

android statusbar android-4.0-ice-cream-sandwich

13
推荐指数
3
解决办法
3万
查看次数

使用系统权限静默卸载应用程序

我的应用有系统权限.它将在固件内部,现在它位于/ 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)

android android-firmware android-4.0-ice-cream-sandwich

13
推荐指数
2
解决办法
2万
查看次数

构建错误:Ubuntu上的冰淇淋三明治模拟器

我正在尝试在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)

有人可以帮我这个吗?

android build emulation android-4.0-ice-cream-sandwich

12
推荐指数
1
解决办法
2953
查看次数

在Android ICS 4.0中dlmalloc或dlfree中的HEAP MEMORY CORRUPTION和SIGSEGV错误

因为在我考虑将问题和解决方案发布到此处之前,我找不到任何报告此行为的人,因此它可以帮助其他有此问题的人.我们的应用程序在ICS之前的设备上运行良好.我们在Galaxy Nexus和ICS模拟器上测试了我们的应用程序,并看到了以下类型的奇怪进程崩溃:

dlmalloc中的堆内存损坏

在dlfree中堆积记忆腐败

信号11(SIGSEGV),故障地址deadbaad

问题是崩溃发生在原生空间中,因此没有任何自编代码直接影响它.由于我们在列表中处理了大量图像,并且系统为这些图像分配了位图,因此唯一想到的是一些不好的位图处理.我们遵循网络上的所有最佳实践,甚至帮助GC通过调用收集不需要的资源bitmap.recycle().无论如何,由于某种未知的原因,该应用程序在Android ICS 4.0上不断崩溃.

heap android bitmap android-4.0-ice-cream-sandwich

12
推荐指数
1
解决办法
2万
查看次数

ICS上的位图加载了错误的像素格式

我遇到了以下问题.当任何位图从资源由冰淇淋三明治运行的应用程序加载时,它可能会被不正确地,如果它已经被解码的格式,这不同于当前窗口的格式,在没有施加抖动呈现.但是,解码格式和窗口格式都已明确设置:

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位)窗口格式,各种位图解码格式: 32位窗口格式

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

有几点可以注意到:

  • 不时不考虑抖动标志;
  • ICS的默认窗口格式似乎是RGB_565;
  • RGB_565 窗口格式RGBA_8888 位图解码格式出现唯一好看的渐变.

在这些问题中也报告了这个问题,但仍然没有找到解决方案:

渐变兼容性问题 - ICS默认的颜色比以前的所有Android版本都少

Android中糟糕的背景图像质量

该quistion是,如何处理所有这些格式在ICS,更准确地说,如何使ICS负载与位图RGBA_8888格式,以及如何设置窗口格式RGBA_8888,以便这些位图显示正确?

android drawable android-4.0-ice-cream-sandwich

12
推荐指数
1
解决办法
2841
查看次数

ICS中的TYPE_SYSTEM_OVERLAY

在Honeycomb中,我能够使用TYPE_SYSTEM_OVERLAY创建系统覆盖,并使用FLAG_WATCH_OUTSIDE_TOUCH接收触摸.

现在ICS改变了一些东西.我仍然可以创建系统覆盖,但我无法接触.

现在,我能够使用TYPE_SYSTEM_ALERT创建相同的内容并获取触摸,但它只是捕获touchevents,而不是像Honeycomb那样传递它们.

有任何想法吗?

亲切的问候

android layoutparams android-windowmanager android-4.0-ice-cream-sandwich

12
推荐指数
2
解决办法
1万
查看次数

无法恢复活动错误

我的活动包含此代码以获取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上,它可以正常工作.但是,如果我更改了在"开发者选项"中选择"不保留活动"选项的系统设置.错误未显示.

我想修改我的代码以避免此错误而不更改系统设置.我该怎么办?

android cursor android-4.0-ice-cream-sandwich

12
推荐指数
1
解决办法
1万
查看次数

在Android 4上打破了setColorFilter(),在Android 5上工作

我试图定期(每秒几次)在屏幕上闪烁不同的颜色.

要更改颜色,我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)

android android-4.0-ice-cream-sandwich android-5.0-lollipop

12
推荐指数
2
解决办法
4418
查看次数

MediaButtonIntentReceiver无法在Android 4.0+中运行

目标是拦截来自耳机的广播以及最终的蓝牙,以响应来自耳机的不同类型的点击以改变媒体播放器.此解决方案适用于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

11
推荐指数
1
解决办法
9049
查看次数

保护VpnService中的套接字

我正在探索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

11
推荐指数
2
解决办法
8413
查看次数