小编vki*_*ins的帖子

应用程序启动时收到奇怪的推送消息

我的推送服务捕获了一个奇怪的推送消息:

Bundle[{CMD=RST_FULL, from=google.com/iid, android.support.content.wakelockid=1}]
Run Code Online (Sandbox Code Playgroud)

刚刚开始发生,我无法确定哪个代码更改应该归咎于此.有没有人见过这个消息,也许知道它来自哪里以及为什么?

android push-notification google-cloud-messaging

55
推荐指数
3
解决办法
9216
查看次数

使用来自上下文提供商的数据或请求Google照片读取权限?

我的应用允许用户从其他应用导入他们的照片和视频.现在谷歌用Google照片取代了Google+照片,但有些事情让我感到震惊.其中一件事是在应用重启后重新使用导入的文件.我感觉他们已经收紧了Google照片使用图片URI返回意图时发出的权限,因此在我的应用程序被杀后,它不再拥有访问上传文件的权限.我正在接受安检:

java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.MediaContentProvider from ProcessRecord{2c17ab9e 2124:com.myapp.myapp/u0a436} (pid=2124, uid=10436) that is not exported from uid 10427
Run Code Online (Sandbox Code Playgroud)

编辑:

我也在重复使用提供的文件时遇到同样的问题 com.google.android.apps.docs.sync.filemanager.FileProvider

有什么建议/解决方法吗?我知道我可以在失去许可之前阅读该文件,所以理论上我可以复制它,但我不能说我非常喜欢这个...

android android-contentprovider google-photos

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

异常 - 无法解析索引6处的属性:TypedValue

我看到以下异常:

04-06 13:35:58.498  4219  4219 E AndroidRuntime: android.view.InflateException: Binary XML file line #17: Failed to resolve attribute at index 6: TypedValue{t=0x3/d=0x46 "res/color/abc_secondary_text_material_dark.xml" a=2 r=0x7f0e00e5}
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at android.support.v7.internal.view.menu.MenuPopupHelper$MenuAdapter.getView(MenuPopupHelper.java:374)
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at android.support.v7.internal.view.menu.MenuPopupHelper.measureContentWidth(MenuPopupHelper.java:223)
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at android.support.v7.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:157)
04-06 13:35:58.498  4219  4219 E AndroidRuntime:    at android.support.v7.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:781) …
Run Code Online (Sandbox Code Playgroud)

android

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

恢复ViewPager片段(MVP)的演示者

我正在尝试重构现有的应用程序以使用MVP架构.其中一项活动有ViewPager三个片段.每个片段都与演示者链接.确切地说 - 每个演示者在创建时都会被赋予一个View工作,即a Fragment.现在,我正在这个ViewPager适配器中创建这些演示者- 特别是在getItem(int position)方法中.

Fragment fragment = FirstFragment.newInstance();
FirstPresenter presenter = new FirstPresenter(repo, (FirstContract.View) fragment, projectId, userId);
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,如果进程被杀死然后重新启动,ViewPager它有自己的生命周期,因此getItem不再被调用 - 片段会自动重建,没有演示者.

这个问题有一个已知的解决方案吗?

mvp android android-mvp

10
推荐指数
1
解决办法
1938
查看次数

Android Crashlytics发送错误的行号

我正在尝试将Crashlytics与我的应用程序集成并且它正在运行,但是通过的行号似乎是不正确的.这是我为我的测试异常得到的堆栈:

Fatal Exception: java.lang.RuntimeException: This is a test crash
   at com.myapp.testapp.activity.MainActivity.animateReveal(MainActivity.java:42453)
   at com.myapp.testapp.activity.MainActivity.onClick(MainActivity.java:1356)
   at android.view.View.performClick(View.java:5204)
   at android.view.View$PerformClick.run(View.java:21153)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5417)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Run Code Online (Sandbox Code Playgroud)

所以我的崩溃是在第1453行,但由于某种原因,它显示为42453?有趣的是,堆栈中的下一个行号是正确的......

Proguard的:

# Crashlitics

-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keepattributes *Annotation*
Run Code Online (Sandbox Code Playgroud)

android crashlytics twitter-fabric

8
推荐指数
1
解决办法
953
查看次数

将JsonArray添加到JsonObject生成的转义字符(gson)

我正在使用GSON库来创建一个json对象并向其添加一个json数组.我的代码看起来像这样:

JsonObject main = new JsonObject();
main.addProperty(KEY_A, a);
main.addProperty(KEY_B, b);

Gson gson = new Gson();
ArrayList<JsonObject> list = new ArrayList<>();
JsonObject objectInList = new JsonObject();
objectInList.addProperty(KEY_C, c);
objectInList.addProperty(KEY_D, d);
objectInList.addProperty(KEY_E, e);
list.add(objectInList);
main.addProperty(KEY_ARRAY,gson.toJson(list));
Run Code Online (Sandbox Code Playgroud)

输出似乎包含一些意外的斜杠:

{"A":"a","B":"b","array":["{\"C\":\"c\",\"D\":\"d\",\"E\":\"e\"}"]}
Run Code Online (Sandbox Code Playgroud)

java android json gson

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

Android人脸检测 - Vision API或Camera API

我需要一种在我的相机应用程序中检测面部的简单方法.我所关心的只是一个回调,说在某个地方检测到了一张脸,或者在预览中检测到了坐标.我注意到似乎有几种面部检测API - 在Google Play服务中以及遗留和相机2 API中.我应该将哪一个用于上述简单要求?

android android-camera google-vision

7
推荐指数
1
解决办法
6962
查看次数

为包含 RxJava 的 ThrottleLast 操作符的方法编写单元测试

我有一个我想测试的方法,它看起来像这样:

 private Disposable getStuff(){
    return Observable
            .combineLatest(
                    repoOne.getStuff(),
                    repoTwo.getOtherStuff(),
                    session.getSomethingElse(),
                    session.getOtherSomethingElse(),
                    (a, b, c, d) -> new Stuff.Builder()
                            .stuff(a)
                            .stuffB(b)
                            .stuffC(c)
                            .stuffD(d)
                            .build())
            .throttleLast(500, TimeUnit.MILLISECONDS)
            .subscribeOn(mSchedulerProvider.io())
            .observeOn(mSchedulerProvider.ui())
            .subscribe(this::populateStuff, this::showError);
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试测试此方法,但它没有通过throttleLast。我主要通过应用 a 来尝试它TestScheduler,但没有得到任何结果。例如我试过:

<...>
    .throttleLast(500, TimeUnit.MILLISECONDS,mTestScheduler)
<...>
Run Code Online (Sandbox Code Playgroud)

然后当我调用该方法时,我将时间提前:

    mCompositeDisposable.add(getStuff());
    mTestScheduler.advanceTimeTo(0, TimeUnit.MILLISECONDS);
    mTestScheduler.advanceTimeTo(505, TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)

但这没有任何作用,即populateStufforshowError仍然没有被调用。我可能使用TestScheduler不正确,有什么建议吗?

android rx-java rx-java2

7
推荐指数
1
解决办法
641
查看次数

在构建时基于Android版本更改主题和样式

我知道我可以为不同的API级别添加不同的XML,例如,为值-v21和values-v19设置不同的样式.我想要了解的是构建系统如何实际使用这些不同的值?因此,例如,如果我在所有API中都有大部分样式,并且一个样式中的一个项目在21和其他样式之间发生变化,那么我是否:

1)将整个styles.xml复制到v21中,并更改我需要更改的一个值

2)只在v21下添加一个更改为styles.xml的样式

3)只添加那个在21下改变的一个样式的项目

令人困惑,我找不到任何文档,如何构建的进程处理合并样式.

android android-styles

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

清除没有动画的Android活动堆栈(静默)

我有两个活动,A和B.

1)从活动A,您可以转到B并通过后退按钮返回A(继续).

2)从活动A,你可以去B,做一个选择,通过重新加载它将返回到活动A. 在这里,我需要从后台堆栈中清除活动A的上一个副本.

在第二种情况下,我使用以下意图:

    Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
    finish();
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我的新活动首先被绘制,然后我可以看到旧的副本被删除 - 所以有一些相同活动的动画消失了.是否有任何方法可以反转该行为,以便先删除旧活动,或者删除该动画?谢谢!

编辑:

就解决方法而言,现在我将活动A设置为singleTask清单,覆盖onNewIntent并重置我需要重新加载的所有对象onResume.这似乎工作,但我更喜欢一个干净的石板,即重新加载活动

android android-activity

6
推荐指数
0
解决办法
647
查看次数