小编Roy*_*erg的帖子

默认FirebaseApp未初始化

我们Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.在Android应用中看到了一些例外情况,我们刚刚添加了Firebase远程配置.

堆栈跟踪如下:

Fatal Exception: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
       at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
       at com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(Unknown Source)
       at com.example.app.fragments.SomeFragment.updateFooter(SourceFile:295)
       at com.example.app.fragments.SomeFragment.onCreateView(SourceFile:205)
       at android.support.v4.app.Fragment.performCreateView(SourceFile:2080)
       at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1108)
       at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1290)
       at android.support.v4.app.BackStackRecord.run(SourceFile:801)
       at android.support.v4.app.FragmentManagerImpl.execSingleAction(SourceFile:1638)
       at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(SourceFile:679)
       at android.support.v4.app.FragmentPagerAdapter.finishUpdate(SourceFile:143)
       at android.support.v4.view.ViewPager.populate(SourceFile:1240)
       at android.support.v4.view.ViewPager.populate(SourceFile:1088)
       at android.support.v4.view.ViewPager.setAdapter(SourceFile:542)
       at com.example.app.SomeActivity.onSomeAsyncCallback(SourceFile:908)
       at com.example.app.SomeDataRetriever.onAsyncHttpCompleted(SourceFile:72)
       at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:141)
       at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:19)
       at android.os.AsyncTask.finish(AsyncTask.java:679)
       at android.os.AsyncTask.access$500(AsyncTask.java:180)
       at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:696) …
Run Code Online (Sandbox Code Playgroud)

android firebase-remote-config

214
推荐指数
15
解决办法
17万
查看次数

权限拒绝:startForeground需要android.permission.FOREGROUND_SERVICE

最近我们突然看到了下面的一些堆栈跟踪.为什么会这样?这是应用程序尝试通过媒体通知和所有内容将音频评论服务移动到前台时.

java.lang.SecurityException: Permission Denial: startForeground from pid=1824, uid=10479 requires android.permission.FOREGROUND_SERVICE
    at android.os.Parcel.createException(Parcel.java:1942)
    at android.os.Parcel.readException(Parcel.java:1910)
    at android.os.Parcel.readException(Parcel.java:1860)
    at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:5198)
    at android.app.Service.startForeground(Service.java:695)
    at com.example.app.services.AudioService.setUpMediaNotification(AudioService.java:372)
    at com.example.app.services.AudioService.setUpAndStartAudioFeed(AudioService.java:328)
    at com.example.app.services.AudioService.onStartCommand(AudioService.java:228)
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3667)
    at android.app.ActivityThread.access$1600(ActivityThread.java:199)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
 Caused by: android.os.RemoteException: Remote stack trace:
    at com.android.server.am.ActivityManagerService.enforcePermission(ActivityManagerService.java:9186)
    at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked(ActiveServices.java:1189)
    at com.android.server.am.ActiveServices.setServiceForegroundLocked(ActiveServices.java:870)
    at com.android.server.am.ActivityManagerService.setServiceForeground(ActivityManagerService.java:20434)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:976)
Run Code Online (Sandbox Code Playgroud)

android android-service android-permissions

155
推荐指数
5
解决办法
5万
查看次数

SecurityException - GoogleCertificatesRslt:不允许

我们有一个拥有数百万用户的应用程序。在过去的一周里,我们从旧版应用的 Firebase Crashlytics 收到了大约 30 个“速度警报”,错误消息如下:

Fatal Exception: java.lang.SecurityException
GoogleCertificatesRslt: not allowed: pkg=com.example.app, sha1=<sha1 redacted>, atk=false, ver=203914019.true (go/gsrlt)
android.os.Parcel.readException (Parcel.java:1959)
android.os.Parcel.readException (Parcel.java:1905)
com.google.android.gms.common.internal.s.r (s.java:37)
com.google.android.gms.common.internal.W.u (W.java:90)
com.google.android.gms.common.api.internal.At.q (At.java:17)
com.google.android.gms.common.api.internal.rt.run (rt.java:5)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:457)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
com.google.android.gms.internal.ef.run (ef.java:6)
java.lang.Thread.run (Thread.java:764)
Run Code Online (Sandbox Code Playgroud)

它不会影响那么多用户,可能是几百到一千。通常我们不会真正注意到这么小的问题,但是因为对于那些用户来说它似乎一遍又一遍地发生,我们已经收到了所有这些速度警报 - 使其更加明显。

为什么会这样?堆栈跟踪略有不同,但看起来确实与 Google 的 GMS 相关。

我们或我们的用户可以做些什么来避免它?

这个问题似乎分散在 Android 版本和设备供应商之间。

android google-api

41
推荐指数
3
解决办法
2619
查看次数

可以隐藏ICS上的选项菜单按钮吗?

我有一个使用android:minSdkVersion="7"和的应用程序android:targetSdkVersion="10".是否可以隐藏ICS(api level 14)屏幕上的选项菜单按钮?

某些活动可能会使用选项菜单,但不是全部.显示/隐藏选项菜单按钮以使其对于他/她可能期望找到更多功能的用户来说更加直观,这将是很棒的.

android android-4.0-ice-cream-sandwich

19
推荐指数
1
解决办法
9289
查看次数

如何知道一项活动是否在没有过渡的情况下开始?

我有一个用例,我主要通过转换开始一个活动,但从导航抽屉打开它时不是这种情况.

为了保持过渡顺利,我有一个Transition.TransitionListener在转换完成时触发一些UI更新.

所以我有这样的事情:

public class SomeActivity extends Activity {

    public void onCreate(Bundle savedInstanceState){ 
        // ...
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
            sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
                // ...
                @Override
                public void onTransitionEnd(Transition transition) {
                    doSomeUiUpdating();
                }
            });
        } else { // Pre-Lollipop
            doSomeUiUpdating();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种运作良好,开始与动漫活动的时候,但我怎么能知道,如果活动未经过渡开始,这样我可以打电话doSomeUiUpdating()

我敢肯定,必须有一个简单的方法Activity,Window,Transition或地方,我都忽略了.我不想在调用Activity上中继设置一些告诉动画是否显示的包.

android android-animation android-transitions

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

使用Google登录时SignInConfiguration的ClassNotFoundException

我正在实施Google登录应用.登录本身似乎工作正常,但是当我请求用户的电子邮件或ID令牌时,我在日志中看到以下堆栈跟踪,并且状态来自GoogleSignInResultasStatus{statusCode=unknown status code: 12500, resolution=null}

03-30 13:59:09.821 3634-4322/? E/Parcel: Class not found when unmarshalling: com.google.android.gms.auth.api.signin.internal.SignInConfiguration
                                         java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration
                                             at java.lang.Class.classForName(Native Method)
                                             at java.lang.Class.forName(Class.java:309)
                                             at java.lang.Class.forName(Class.java:273)
                                             at android.os.Parcel.readParcelableCreator(Parcel.java:2281)
                                             at android.os.Parcel.readParcelable(Parcel.java:2245)
                                             at android.os.Parcel.readValue(Parcel.java:2152)
                                             at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
                                             at android.os.BaseBundle.unparcel(BaseBundle.java:221)
                                             at android.os.BaseBundle.getString(BaseBundle.java:918)
                                             at android.content.Intent.getStringExtra(Intent.java:5767)
                                             at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2365)
                                             at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1848)
                                             at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:5809)
                                             at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:5593)
                                             at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:142)
                                             at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3786)
                                             at android.os.Binder.execTransact(Binder.java:461)
                                          Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.auth.api.signin.internal.SignInConfiguration" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
                                             at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                             at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                             at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                             at java.lang.Class.classForName(Native Method) 
                                             at java.lang.Class.forName(Class.java:309) 
                                             at java.lang.Class.forName(Class.java:273) …
Run Code Online (Sandbox Code Playgroud)

android google-play-services

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

在 Android 11 上调用 getPackageInfo 时出现 NameNotFoundException

设置完成后targetSdkVersion,以30(安卓11)我得到android.content.pm.PackageManager$NameNotFoundException这样做时,packageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS)在包装上,我知道存在。

堆栈跟踪如下:

android.content.pm.PackageManager$NameNotFoundException: com.google.android.apps.maps
        at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:202)
        at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:174)
Run Code Online (Sandbox Code Playgroud)

android android-permissions android-11

14
推荐指数
2
解决办法
4694
查看次数

无法在Android Studio 2.0 Preview 5 + Preview 6中解析从外部依赖项的导入

从最后一个Android Studio 2.0预览升级到预览版5后,我无法从android.support.wearable软件包导入.

主应用程序和Wear应用程序都构建并运行得很好,但Android Studio中的编辑器抱怨它无法解析这些导入

import android.support.wearable.activity.WearableActivity;
import android.support.wearable.view.CircledImageView;
import android.support.wearable.view.WearableListView;
Run Code Online (Sandbox Code Playgroud)

在Wear模块的build.gradle中,我有以下依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':common')
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v13:23.1.1'

    compile 'com.google.android.support:wearable:1.3.0'
    provided 'com.google.android.wearable:wearable:1.0.0'
    compile 'com.google.android.gms:play-services-wearable:8.4.0'
}
Run Code Online (Sandbox Code Playgroud)

据我所知,从http://developer.android.com/training/wearables/apps/always-on.html#EnableAmbient中可以使用提供的语句.它在Android Studio升级之前一直运行良好.我错过了什么吗?

更新:

这不仅仅是Wear库的一个问题,它通常用于任何外部依赖.(Topic最初无法在Android Studio 2.0 Preview 5中解析软件包android.support.wearable.)

似乎问题可以在任何时候发生,但实际上,只要我在一个类中进行大量更改(可能是对导入的更改?),它就会发生.刚才它突然无法解决Play服务和Facebook广告的导入(同时仍在为其他依赖项工作).

我偶然发现了问题的解决方法:如果我在安装的Android Studio 1.5中打开并构建项目,则所有导入都是固定的.回到Android Studio 2.0,我可以继续编程,而不会导致很长一段时间无法解析.

对于搜索问题的任何人,Android Studio中的错误消息通常无法解析符号'[package]'.

android android-gradle-plugin android-studio-2.0

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

什么是“AdMob 离线通知”通知渠道?

突然间,我看到我们的应用程序有一个名为“AdMob 离线通知”的新通知渠道。

我们确实使用 AdMob,所以我假设它是由 Google 的库创建的,但我找不到任何关于它的文档。我想知道该频道用于什么,以及是否有可能根本没有它。

应用程序第一次启动时就会创建频道。它的 id 是offline_notification_channel,其重要性设置为低(无振动,无声音)。

我确实设法在https://groups.google.com/g/google-admob-ads-sdk/search?q=%22admob%20offline%20notifications%22上找到了同样想知道的其他人,但到目前为止还没有答案。

android admob notification-channel

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

为什么我们会得到这些"无效"意图?

我们有一个带有Activity的应用程序,可以通过两种方式启动:

  • 来自另一个活动 - 总是填写一些额外的数据
  • 从深层链接

据我所知,这总是很好.我们要么Intent.ACTION_VIEW使用数据URI,要么获得一些字符串附加功能.

但是,我们的行动很少,Intent.ACTION_MAIN而且没有额外的数据.

toString()本意向书如下(类名称更改):

Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10400000 cmp=com.example.OurActivity }
Run Code Online (Sandbox Code Playgroud)

Intent.getExtras()返回null,Intent.getDataString()返回null.

在哪些情况下会发生这种情况?为什么活动的类别Intent.CATEGORY_LAUNCHER?我们如何获得向用户显示正确内容所需的数据?

launchMode没有为活动指定.唯一IntentFilterAndroidManifest.xml用于深度链接(而不是发射器类别).

问题发生在Android 4-6的各种设备上.

编辑:忘了提旗子:

由于打印输出表明Intent的标志是FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_BROUGHT_TO_FRONT.我想这可能与此相关.

android android-intent

9
推荐指数
1
解决办法
515
查看次数