我正在尝试使用自定义视图的简单操作栏,但我得到以下结果:
为了演示,我创建了一个带有黄色背景颜色的简单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 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
我正在拼命尝试为我的Nexus 4安装ADB USB驱动程序,这对于任何形式的Android开发都是必需的(正如您所知).你也可以说,它们是用于Android编程的最必要的工具,对吗?我已经经常为我的旧HTC Desire建立一个Android开发环境,但我没有为我的Nexus 4设置它.
我的方式:
我真的不知道问题是什么.我已经尝试过的一些事情包括:
我担心这个问题是因为新的驱动程序版本(v8)或KitKat,因为我在网上找不到任何可行的解决方案而且KitKat相对较新,但是,有没有人有解决方案呢?
随着越来越多的设备具有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.
我们刚刚违反了适用于在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) 在我的应用程序中,我将图像路径存储在我的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
直到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设备充当外围设备?
我试图从终端创建一个视频,但我不能成功.它像这样给终端带来错误.
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
与以前的版本不同,在4.4中,从最近的任务中滑动应用程序会永久杀死应用程序及其服务(如强制停止),即使它正在运行后台服务.它显示0个进程1服务,但服务也不起作用.理想情况下,它不应该杀死后台服务,它不会在4.3之前的版本中.知道为什么会发生在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)