标签: android-4.4-kitkat

Android 4.4 Kitkat自定义视图操作栏没有填充整个宽度

我正在尝试使用自定义视图的简单操作栏,但我得到以下结果:

为了演示,我创建了一个带有黄色背景颜色的简单xml,它应该占据整个宽度.

这是xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/yellow"
    android:orientation="vertical" >

    <TextView
        android:visibility="gone"
        android:id="@+id/action_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/action_save"
        android:gravity="center"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:textStyle="bold"
        android:layout_marginLeft="10dp"
        android:textColor="@android:color/white"
        android:text="@string/save" />

    <ImageView
        android:visibility="gone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/ic_actionbar_logo" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用以下主题:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"></style>
Run Code Online (Sandbox Code Playgroud)

动作条

这是操作栏初始化代码:

    actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setCustomView(R.layout.actionbar);
Run Code Online (Sandbox Code Playgroud)

android android-actionbar-compat android-4.4-kitkat

16
推荐指数
2
解决办法
7537
查看次数

Spinner中奇怪的NullPointerException

从Android 4.4 KitKat开始,我的应用程序出现了奇怪的崩溃.它似乎与微调器有关.我收到的这个bug堆栈跟踪:

java.lang.NullPointerException
    at android.widget.TextView.makeNewLayout(TextView.java:6124)
    at android.widget.TextView.onMeasure(TextView.java:6400)
    at android.view.View.measure(View.java:16458)
    at android.widget.Spinner.setUpChild(Spinner.java:632)
    at android.widget.Spinner.makeView(Spinner.java:595)
    at android.widget.Spinner.getBaseline(Spinner.java:431)
    at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1089)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
    at android.view.View.measure(View.java:16458)
    at com.android.internal.widget.ActionBarView.onMeasure(ActionBarView.java:1011)
    at android.view.View.measure(View.java:16458)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.widget.ActionBarContainer.onMeasure(ActionBarContainer.java:271)
    at android.view.View.measure(View.java:16458)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
    at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:254)
    at android.view.View.measure(View.java:16458)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289)
    at android.view.View.measure(View.java:16458)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1914)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1111)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1293)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5582)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
    at android.view.Choreographer.doCallbacks(Choreographer.java:562)
    at android.view.Choreographer.doFrame(Choreographer.java:532)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4998)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception spinner android-4.4-kitkat

16
推荐指数
1
解决办法
3718
查看次数

在Windows 8 64位上为Nexus 4(带KitKat)安装USB驱动程序 - "没有兼容的软件驱动程序"

我正在拼命尝试为我的Nexus 4安装ADB USB驱动程序,这对于任何形式的Android开发都是必需的(正如您所知).你也可以说,它们是用于Android编程的最必要的工具,对吗?我已经经常为我的旧HTC Desire建立一个Android开发环境,但我没有为我的Nexus 4设置它.

我的方式:

  • 运行Windows 8和8.1预览(在两台不同的机器上尝试了所有内容)
  • 从Google下载Android开发工具(SDK + ADT + Eclipse +等)
  • 通过Android SDK Manager下载Google USB驱动程序(v8)
  • 在设备管理器中,我有一个条目"Nexus 4",我右键单击,然后选择"更新驱动程序软件..."
  • - >浏览计算机以查找驱动程序软件 - >让我在计算机上选择一个设备驱动程序列表 - >从磁盘安装... - >选择Google驱动程序路径 - >对话框出现:
  • "您指定的文件夹不包含适用于您设备的兼容软件驱动程序.[...]"

我真的不知道问题是什么.我已经尝试过的一些事情包括:

  • 在USB3/USB2端口上执行所有操作
  • 将计算机连接模式更改为PTP(而不是MTP)
  • 在Win8/Win8.1预览中做一切
  • 我尝试安装通用ADB驱动程序:download.clockworkmod.com/test/UniversalAdbDriverSetup6.msi没有任何重大结果

我担心这个问题是因为新的驱动程序版本(v8)或KitKat,因为我在网上找不到任何可行的解决方案而且KitKat相对较新,但是,有没有人有解决方案呢?

android windows-8 nexus-4 windows-8.1 android-4.4-kitkat

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

设备列表支持HCE?

随着越来越多的设备具有KitKat,我正在尝试编译支持HCE的设备列表.

有人有这个清单吗?随意添加评论以参与此列表.

以下是我到目前为止:

笔记:

  • 并非所有KitKat设备都支持HCE.
  • 要检测HCE支持,请使用以下代码段:

    boolean isHceSupported =
        getPackageManager().hasSystemFeature("android.hardware.nfc.hce");
    
    Run Code Online (Sandbox Code Playgroud)
  • 有人报告称KitKat HCE手机在NFC设置中有"点按并付费"功能.我不知道使用"Tap&Pay"作为HCE检测方法是否有效,因为"Tap&Pay"可能意味着使用内部SE进行Tap&Pay.它不一定是HCE.

  • 采用Broadcom NFC控制器的手机将支持HCE.
  • 使用恩智浦NFC控制器的手机可能/可能不支持HCE.
  • 或者使用此Android应用程序检测HCE和NFC控制器类型.

支持HCE:

  • Sprint Note 3(Broadcom)
  • Sprint Galaxy S 4
  • Nexus 5
  • Nexus 7(2013)
  • Moto X(来源)

不支持HCE:

  • T-Mobile Galaxy Note 3(恩智浦)
  • AT&T Galaxy Note 3
  • Nexus 7(2012)

host emulation nfc android-4.4-kitkat hce

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

SD卡上的Android KitKat 4.4文件夹

我们刚刚违反了适用于在Android 4.4上将文件写入SD卡(外部存储)的新权限(EACCES权限被拒绝)

在KitKat之前,我们设置了可写文件夹,如下所示:

mfolder = Environment.getExternalStorageDirectory().getPath() + "/appfiles";
Run Code Online (Sandbox Code Playgroud)

然而,经过几个小时的搜索,我得出结论,无论是对还是错,在4.4设备上启用文件写入需要将其更改为:

mfolder = Environment.getExternalStorageDirectory().getPath() + "/Android/data/com.xyz.abc/appfiles";
Run Code Online (Sandbox Code Playgroud)

所以mfolder会是这样的:/mnt/sdcard/Android/data/com.xyz.abc/appfiles

这是正确的,我们是否在sdcard上创建了一个像上面那样的文件夹来启用4.4设备来写文件?

mfolder是我们保存为共享首选项的String.

然后,如果API> = 19,我们将运行此代码,该代码将更改mfolder String,然后将旧文件夹中的所有文件复制到新的"kitkat"文件夹.

if (android.os.Build.VERSION.SDK_INT>=19){
        if (!mfolder.contains("/Android/data/com.xyz.abc/appfiles")){
            if (prefs.getBoolean("kitkatcheck", false)==false){

                //update mfolder from
                      // /mnt/sdcard/appfiles
                      // to
                      // /mnt/sdcard/Android/data/com.xyz.abc/appfiles
                String prekitkatfolder = mfolder;
                String kitkatfolder = mfolder.replace("/appfiles", "/Android/data/com.xyz.abc/appfiles");
                mfolder = kitkatfolder;
                try {
                    File sd = new File(mfolder);
                    if(!sd.exists() || !sd.isDirectory()) {
                        sd.mkdirs();
                    }
                } catch (Exception e) {
                    Toast.makeText(getBaseContext(), "Error creating Kitkat folder!\n" + e.toString(), Toast.LENGTH_LONG).show();
                    return;
                }
                prefEditor.putString("patternfolder", mfolder);
                prefEditor.putBoolean("kitkatcheck", …
Run Code Online (Sandbox Code Playgroud)

android android-sdcard android-4.4-kitkat

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

如何在android API 19(KitKat)中保留权限?

在我的应用程序中,我将图像路径存储在我的SQlite数据库中以供进一步使用.我得到的路径是

content://com.android.providers.media.documents/document/image%3A71964
Run Code Online (Sandbox Code Playgroud)

当我从数据库中检索此路径并尝试从该路径中检索图像时,机器人抛出

java.lang.SecurityException: Permission Denial: opening provider
com.android.providers.media.MediaDocumentsProvider 
from ProcessRecord{42c84ec8 23911:com.gots.gb/u0a248} (pid=23911, uid=10248) 
requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
Run Code Online (Sandbox Code Playgroud)

根据https://developer.android.com/guide/topics/providers/document-provider.html#permissions我需要通过添加以下代码来保留权限

final int takeFlags = intent.getFlags()
        & (Intent.FLAG_GRANT_READ_URI_PERMISSION
        | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Check for the freshest data.
getContentResolver().takePersistableUriPermission(uri, takeFlags);
Run Code Online (Sandbox Code Playgroud)

当我将此代码添加到我的ImageAdapter类时,它扩展了BaseAdapter android抛出

08-21 02:14:38.530: W/System.err(24452): java.lang.SecurityException:
No permission grant found for UID 10248 and Uri 
content://com.android.providers.media.documents/document/image:71964
Run Code Online (Sandbox Code Playgroud)

这是我的ImageAdapter代码的相关部分

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView ;


    if (convertView == null){
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(185, 185));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-4.4-kitkat storage-access-framework

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

Android KitKat是否允许支持蓝牙LE的设备充当外围设备?

直到Android 4.3,支持蓝牙低功耗的Android设备才能充当中央设备.正如在Android 4.3蓝牙LE文档中给出的那样:

Android 4.3(API Level 18)在中心角色中引入了对Bluetooth Low Energy的内置平台支持,并提供了应用程序可用于发现设备,查询服务和读/写特征的API.

随着Android 4.4 KitKat的推出,它现在也可以作为外围设备使用吗?我找不到任何相关文件.如果没有,那么我们是否必须等待Android 4.5才能在Android设备上获得BTLE外设模式?或者有没有其他方法可以让Android设备充当外围设备?

android bluetooth-lowenergy android-4.4-kitkat

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

尝试使用adb shell screenrecord Android 4.4进行视频录制

我试图从终端创建一个视频,但我不能成功.它像这样给终端带来错误.

adb shell screenrecord  /sdcard/screenshotyyyy.mp4
ERROR: unable to create encoder input surface (err=-38)
WARNING: failed at 320x480, retrying at 720x1280
ERROR: unable to create encoder input surface (err=-38)
Run Code Online (Sandbox Code Playgroud)

android video-streaming adb video-recording android-4.4-kitkat

15
推荐指数
1
解决办法
7945
查看次数

在Android 4.4中,从最近的任务中滑动应用程序会永久性地杀死应用程序及其服务.知道为什么吗?

与以前的版本不同,在4.4中,从最近的任务中滑动应用程序会永久杀死应用程序及其服务(如强制停止),即使它正在运行后台服务.它显示0个进程1服务,但服务也不起作用.理想情况下,它不应该杀死后台服务,它不会在4.3之前的版本中.知道为什么会发生在4.4?

service android android-4.4-kitkat

15
推荐指数
1
解决办法
7833
查看次数

糟糕的数组长度,通知管理器导致4.4的手机崩溃

我推出应用程序进入BETA测试和4.4设备的多个用户报告该应用程序导致整个手机崩溃,手机几乎重新启动应用程序启动,即使应用程序甚至没有这样的权限.

我从测试人员那里得到的报告如下:

java.lang.RuntimeException: bad array lengths
at android.os.Parcel.readIntArray(Parcel.java:820)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:348)
at android.app.NotificationManager.notify(NotificationManager.java:139)
at android.app.NotificationManager.notify(NotificationManager.java:112)
at als.wakeup.Awake_Alarm$MyLocationListener.onLocationChanged(Awake_Alarm.java:272)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

这在4.2,4.3工作正常但似乎Galaxy Note 3和Galaxy S5运行4.4重启.

原因是什么?是应用程序相关还是在新操作系统中出现故障?

刚刚发现它在Xperia Z1上运行良好,4.4并且没有崩溃.似乎只有三星引起了这个,任何提示?

通知创建功能:

public Notification CreateNotification(double distance){


    Intent notificationIntentStop = new Intent(this.getApplicationContext(), StopService.class);
    PendingIntent contentIntentStop = PendingIntent.getActivity(this.getApplicationContext(), 0, notificationIntentStop, 0);


    Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.logo);
    Shortcuts shorts = new Shortcuts(this);
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this) …
Run Code Online (Sandbox Code Playgroud)

android android-4.4-kitkat

15
推荐指数
1
解决办法
2580
查看次数