我的一个应用程序有一个backgrouod服务,它使用START_STICKY返回代码onStartCommand在系统杀死它时自动重启.似乎这不再适用于Android KitKat.这有什么解决方案吗?我应该在Kitkat做一些不同的事情来保持服务的运行吗?
注意:在Android-Devlopers小组中有一个关于从最近的应用列表行为中滑动应用程序的类似讨论.这两个问题可以相关吗? https://groups.google.com/forum/#!topic/android-developers/H-DSQ4-tiac
编辑:看到Android问题跟踪器上有开放的错误:
https://code.google.com/p/android/issues/detail?id=63793 https://code.google.com/p/android/issues/detail?id=63618
Edit2:即使服务正在运行startForeground,在单独的进程android:stopWithTask="false"中使用AndroidManifest.xml文件中的标志,也会发生同样的情况......
Edit3:Android问题跟踪器上的更多相关错误:
https://code.google.com/p/android/issues/detail?id=62091 https://code.google.com/p/android/issues/detail?id=53313 https://code.google. COM/p /安卓/问题/细节?ID = 104308
是否有某种解决方法来获得以前的行为?
我必须在webview中使用谷歌地图javascript api.问题是,在拖动地图时,不会加载丢失的图块.在我桌面电脑上的浏览器中,我无法获得相同的行为,但在拖动地图时加载图块.在图片中我拿着地图,直到我松开手指才发生任何事情.

我在gmaps bugtracker中发现了一个问题(不完全适合我的问题,但有点接近)并尝试了所有提到的解决方案:https://code.google.com/p/gmaps-api-issues/issues/detail? id = 1448
这是我到目前为止所尝试的:
// Setting the maps div container to a fixed size
#map-canvas {
height: 600px;
width: 600px;
}
// Emit resize trigger on mouse move
$(document).ready(function () {
$("#map-canvas").mousemove(function (event) {
setTimeout(function () {
google.maps.event.trigger(map,'resize');
map.setZoom(map.getZoom());
}, 100);
});
});
// loading Google Maps API after document has been loaded
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&' +
'callback=initialize';
document.body.appendChild(script);
}
window.onload = loadScript; …Run Code Online (Sandbox Code Playgroud) 在我的一个应用程序中,我使用带有自签名证书的HTTPS,并按照Android开发人员培训网站(https://developer.android.com/training/articles/security-ssl.html#UnknownCa)中的示例代码进行操作.
我最近得到了以下警报,说当前的实施不安全:
安全警报
您的应用程序正在使用与Apache HTTP客户端的X509TrustManager接口的不安全实现,从而导致安全漏洞.有关详细信息,请参阅此Google帮助中心文章,其中包括修复漏洞的截止日期.
有人可以提供更多详细信息,除了上面链接的示例代码之外应该更新什么?
我应该实现自定义TrustManager吗?如果是这样,它应该验证什么?
我已将AdMob v4.1.0集成到我的应用程序中,它似乎导致了巨大的内存泄漏(非常确定它已经发生在4.0.4上).
为了隔离问题,我创建了一个具有空白线性布局的新项目,并向其添加了AdView(这实际上是AdMob提供的示例代码中的复制和粘贴).请参阅我的main.xml,MainActivity.java和清单内容:
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/linearLayout">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java:
package AdsTry.main;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
private final int AD_VIEW_ID = 1000000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Lookup R.layout.main
LinearLayout layout = (LinearLayout)findViewById(R.id.linearLayout);
// Create the adView
// Please replace MY_BANNER_UNIT_ID with your …Run Code Online (Sandbox Code Playgroud) 在尝试获取最新的粘性意图时,我收到了java.lang.IllegalArgumentException以下消息regist too many Broadcast Receivers(是的,消息说明regist而不是register)ACTION_BATTERY_CHANGED.我使用以下代码:
Intent latestStickyIntent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Run Code Online (Sandbox Code Playgroud)
如您所见,由于我使用的null是BroadcastReceiver ,因此没有新接收器的实际寄存器.
据我所知,这只发生在HUAWEI RIO L01设备上的单个用户,但我不知道是否是原因.
任何人都有与此错误相似的经历?
更新(03/2016):
开始在其他华为设备(ALE L04,G7 L03)上看到相同的问题,但仍然没有其他厂商的设备.
我正在使用PendingIntent由AlarmManager(with setRepeating)启动IntentService每隔几分钟启动一次wifi扫描(使用).在大多数设备上,在大多数情况下,没有问题.但是,在几个设备上,我收到以下错误(无法在任何测试设备上重现错误.这是来自用户设备的崩溃日志):
java.lang.RuntimeException: Unable to start service com.myapp.android.service.MyService@44a9701 with Intent { act=com.myapp.android.ACTION_PERFORM_WIFI_SCAN flg=0x4 cmp=com.myapp/com.mayapp.android.service.MyService (has extras) }: java.lang.SecurityException: Permission Denial: broadcast from android asks to run as user -1 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3021)
at android.app.ActivityThread.-wrap17(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1443)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5415)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
Caused by: java.lang.SecurityException: Permission Denial: broadcast from android asks to run as user -1 but …Run Code Online (Sandbox Code Playgroud) 我正在尝试从相机预览中捕获图像并使用OpenCV将其转换为Mat对象.我注册了callbak方法,public void onPreviewFrame(byte[] data, Camera camera)所以我从相机接收所有预览帧,但我无法将其转换为OpenCV Mat对象.
我目前正在使用以下代码将预览转换data为Mat对象:
Mat previewFrameMat = new Mat(1, data.length, CvType.CV_8U);
previewFrameMat.put(0, 0, data);
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?我使用的是正确的图像类型(CvType.CV_8U)吗?
我可以使用现有的Android软件包轻松做到这一点,但我找不到任何在Android和iOS上都能做同样的软件包.
更新(2017年2月8日):
在等待了两个多星期并对导致零答案的问题上放置了赏金之后,我决定实施一个新的包(react-native-gateway-finder),它返回我正在寻找的确切信息.它目前仅针对Android实现,欢迎iOS实现.
我想实现一个应用内购买机制,该机制支持Google Checkout和PayPal,用于在我的某个Android应用中购买虚拟商品.我阅读了这两种机制的参考资料,但我仍然有一个问题,即处理此类购买的正确方法是什么.问题是,我想管理对我自己的服务器的调用,作为购买交易的一部分,并且如果调用无法取消/回滚整个交易.如果我第一次执行购买交易,并且只有在确认我打电话给我自己的服务时,如果它失败了该怎么办?如果我第一次调用我的服务而不是尝试处理事务并且它失败了我需要回滚我的调用(如果回滚失败会发生什么???)
管理它的正确方法是什么?有没有办法创建一个我缺少的多阶段交易?
android ×7
admob ×1
camera ×1
google-maps ×1
huawei ×1
javascript ×1
memory ×1
memory-leaks ×1
opencv ×1
react-native ×1
security ×1
ssl ×1
sticky ×1
trustmanager ×1
wifimanager ×1