小编use*_*603的帖子

Firebase Analytics事件记录错误

我使用Firebase Analytics,我的应用程序使用以下代码记录一些事件:

Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "SOME_ID")
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "SOME_TYPE");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
Run Code Online (Sandbox Code Playgroud)

它似乎在大多数时候都很好用.在logcat我有这样的事情:

Logging event (FE): select_content, Bundle[{_o=app, content_type=SOME_TYPE, item_id=SOME_ID}]
Run Code Online (Sandbox Code Playgroud)

但对于我收到的一些事件

Logging event (FE): select_content, Bundle[{_o=app, _ev=item_id, _err=4, content_type=SOME_TYPE}]
Run Code Online (Sandbox Code Playgroud)

显然,_err = 4是某种错误代码.这是什么意思?

在那种有错误的情况下,我item_id是一个很长的字符串(20-30个符号).也许这个长度有限制item_id

android firebase firebase-analytics

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

Firebase 分析和崩溃的权限

我用了

//Analytics
compile 'com.google.firebase:firebase-core:9.2.1'
// Crash
compile 'com.google.firebase:firebase-crash:9.2.1'
Run Code Online (Sandbox Code Playgroud)

并在我生成的清单中获得了这些人:

<!-- Required permission for App measurement to run. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Optional permission for App measurement to run. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Run Code Online (Sandbox Code Playgroud)

然后我们有以下块

<permission
    android:name="my.package.name.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" />
Run Code Online (Sandbox Code Playgroud)

我的问题:

如果我只使用 Firebase Analytics 和 Crash 并且不需要任何消息传递功能,是否可以删除第二个块,如下所示:

<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)

第一个块中的“应用程序测量运行的可选权限”是什么意思?删除它也安全吗?

android firebase firebase-analytics firebase-crash-reporting

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

以编程方式更改语言(Android N 7.0 - API 24)

我正在使用以下代码在我的应用程序中设置特定语言.语言保存SharedPreferences在应用程序中.它完全可以达到API级别23.由于Android N也SharedPreferences运行良好,它返回正确的语言代码字符串,但它不会更改区域设置(设置手机的默认语言).可能有什么不对?

更新1:当我Log.v("MyLog", config.locale.toString());res.updateConfiguration(config, dm)它返回正确的语言环境后立即使用,但应用程序的语言没有改变.

更新2:我还提到如果我更改区域设置然后重新启动活动(使用新意图并完成旧版本),它会正确更改语言,甚至在轮换后显示正确的语言.但是当我关闭应用程序并再次打开它时,我会得到默认语言.有点奇怪.

public class ActivityMain extends AppCompatActivity {

    //...
    @Override
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        // Set locale
        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
        String lang = pref.getString(ActivityMain.LANGUAGE_SAVED, "no_language");
        if (!lang.equals("no_language")) {
            Resources res = context.getResources();
            Locale locale = new Locale(lang);
            Locale.setDefault(locale);
            DisplayMetrics dm = res.getDisplayMetrics();
            Configuration config = res.getConfiguration();
            if (Build.VERSION.SDK_INT >= 17) {
                config.setLocale(locale);
            } else {
                config.locale = locale;
            }
        }
        res.updateConfiguration(config, …
Run Code Online (Sandbox Code Playgroud)

android locale android-7.0-nougat

5
推荐指数
1
解决办法
8500
查看次数

Android API 24.在'android'包中找不到属性'minimalSize'的资源标识符

我的清单文件android:minimalSize里面有一个问题activity - layout.它说

在'android'包中找不到属性'minimalSize'的资源标识符

真奇怪.从这里开始https://developer.android.com/preview/features/multi-window.html#configuration它似乎android:minimalSize是多窗口模式的合法属性.

此外,其他属性里面activity - layout喜欢android:defaultHeightandroid:defaultWidth正常.

也许有人有类似的问题.

应用级别build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        //...
        minSdkVersion 16
        targetSdkVersion 24
        //...
    }
    //...
}

dependencies {
    //...
    compile 'com.android.support:appcompat-v7:24.0.0'
}
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml:

//...
<activity
    //...
    android:resizeableActivity="true">
    <layout android:minimalSize="450dp" />
    //...
</activity>
//...
Run Code Online (Sandbox Code Playgroud)

android compiler-errors android-7.0-nougat

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

为什么我们被允许在Python中动态地向类中添加属性?

Python我们可以将属性添加到一个对象(类)动态地,例如:

class Foo(object):
    pass

foo = Foo()
foo.a = 10
Run Code Online (Sandbox Code Playgroud)

我的问题可能有点理论上的问题.所以,它很方便.但是我们为什么要使用这个功能??? 当这种方法更可取时,有什么特别的情况吗?封装怎么样?

python oop encapsulation class-attributes python-3.x

0
推荐指数
1
解决办法
91
查看次数