小编Ana*_*nth的帖子

如何在将文件上传到Firebase后获取文件URL?

将文件上传到Firebase后,如何获取该URL,以便将其存储以供日后使用?我想将URL写入Firebase数据库,以便其他用户可以访问该图像.

我正在上传文件:

public void uploadFile()
{

    StorageReference filepath = mstorageRef.child("folder").child(filename);

    Uri File= Uri.fromFile(new File(mFileName));

    filepath.putFile(File).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
        {
            Toast.makeText(MtActivity.this, "Upload Done", Toast.LENGTH_LONG).show();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我已经确认文件实际上是上传的,所以现在我只需要我可以写入数据库的URL.但是,当我尝试这样做时:

Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl();
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误并说 This method should only be accessed from tests or within private scope

我不确定这意味着什么,我也不知道为什么我会得到这个错误,因为我正在按照Firebase提供的这个例子.

是否有获取URL的新方法?

此外,该特定于该项目的URL是否是唯一的?这意味着如果我将它存储到数据库并尝试以后访问它,我能够这样做吗?

android firebase firebase-storage

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

Kotlin 中数据类中的参数可以是 var 吗?

我是 Kotlin 的初学者,我看过一些关于数据类的示例代码,似乎参数都是 val 类型,就像代码 A

我需要改变数据类MSetting的一些值,所以我设计了Code B,你能告诉我Code B是不是好方法?

代码 A

data class MSetting (
        val _id: Long, 
        val name: String,
        val createdDate: Long,
        val description: String
)
Run Code Online (Sandbox Code Playgroud)

代码 B

data class MSetting (
        var _id: Long, 
        var name: String,
        var createdDate: Long,
        var description: String
)
Run Code Online (Sandbox Code Playgroud)

android kotlin data-class

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

ViewModel 支持属性 [kotlin]

查看一些 Google 演示应用程序(如向日葵或 Google io 2018 应用程序)的代码,我注意到对于 viemodels 的支持属性,它们使用具有自定义 getter 的相同类型的单独实例;像这样:

private val _userData: MutableLiveData<User>
val userData: LiveData<User>
    get() = _userData
Run Code Online (Sandbox Code Playgroud)

但他们为什么要这样做?直接使_userData可访问性不是更好吗?难道是因为虽然_userDataMutableLiveData他们不想观察者能够改变的价值呢?

android viewmodel kotlin

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

androidx 导航:@NonNull 公共开放乐趣的参数太多

我在 Android Studio 中使用导航编辑器来实现Safe Args.

我在一个片段中接受参数为

 <fragment
    android:id="@+id/gameWonFragment"
    android:name="com.example.android.navigation.GameWonFragment"
    android:label="@string/android_trivia"
    tools:layout="@layout/fragment_game_won">

    <action
        android:id="@+id/action_gameWonFragment_to_gameFragment"
        app:destination="@id/gameFragment"
        app:popUpTo="@+id/titleFragment">
    </action>
    <argument
        android:name="numQuestions"
        app:argType="integer"
        android:defaultValue="0" />
    <argument
        android:name="numCorrect"
        app:argType="integer"
        android:defaultValue="0" />
 </fragment>
Run Code Online (Sandbox Code Playgroud)

在我的片段中,我将参数发送为

view.findNavController().navigate(GameFragmentDirections.actionGameFragmentToGameWonFragment(numQuestions, questionIndex))
Run Code Online (Sandbox Code Playgroud)

但是,GameFragmentDirections.actionGameFragmentToGameWonFragment()不想接受论据。我试过Clean ProjectRebuild Project

这是抛出:

Too many arguments for @NonNull public open fun actionGameFragmentToGameWonFragment(): GameFragmentDirections.ActionGameFragmentToGameWonFragment defined in com.example.android.navigation.GameFragmentDirections
Run Code Online (Sandbox Code Playgroud)

android android-studio android-jetpack androidx android-jetpack-navigation

7
推荐指数
3
解决办法
5079
查看次数

使用 CameraX 库 android 时崩溃:java.lang.ClassNotFoundException

我正在使用新的 Jetpack 库 CameraX 制作一个简单的相机应用程序。\n只要我通过添加依赖项来启动应用程序,它就会崩溃。

\n\n

依赖项:

\n\n
implementation "androidx.camera:camera-core:1.0.0-alpha06"\nimplementation "androidx.camera:camera-camera2:1.0.0-alpha06"\n
Run Code Online (Sandbox Code Playgroud)\n\n

崩溃日志:

\n\n
2019-11-28 16:16:45.828 26428-26428/? E/AndroidRuntime: FATAL EXCEPTION: main\nProcess: com.ananth.camerax, PID: 26428\njava.lang.RuntimeException: Unable to get provider androidx.camera.camera2.impl.Camera2Initializer: java.lang.ClassNotFoundException: Didn\'t find class "androidx.camera.camera2.impl.Camera2Initializer" on path: DexPathList[[zip file "/data/app/com.ananth.camerax-5fK5oVGKPPgZn_ITpYwEsA==/base.apk"],nativeLibraryDirectories=[/data/app/com.ananth.camerax-5fK5oVGKPPgZn_ITpYwEsA==/lib/arm64, /system/lib64, /system/vendor/lib64]]\n    at android.app.ActivityThread.installProvider(ActivityThread.java:6444)\n    at android.app.ActivityThread.installContentProviders(ActivityThread.java:5946)\n    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5858)\n    at android.app.ActivityThread.-wrap1(Unknown Source:0)\n    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690)\n    at android.os.Handler.dispatchMessage(Handler.java:105)\n    at android.os.Looper.loop(Looper.java:173)\n    at android.app.ActivityThread.main(ActivityThread.java:6698)\n    at java.lang.reflect.Method.invoke(Native Method)\n    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)\n    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)\n Caused by: java.lang.ClassNotFoundException: Didn\'t find class "androidx.camera.camera2.impl.Camera2Initializer" on path: DexPathList[[zip file "/data/app/com.ananth.camerax-5fK5oVGKPPgZn_ITpYwEsA==/base.apk"],nativeLibraryDirectories=[/data/app/com.ananth.camerax-5fK5oVGKPPgZn_ITpYwEsA==/lib/arm64, /system/lib64, /system/vendor/lib64]]\n    at …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack androidx android-camerax

5
推荐指数
2
解决办法
3735
查看次数

如何在列表中获取应用程序的图标?

我正在尝试使用chechboxes为Android手机上的已安装应用程序制作列表视图.我将图标放在ArrayList中,如下所示

packs = new ArrayList<String>(); // a list of all the packages
names = new ArrayList<String>(); // a list of all the apps names
icons = new ArrayList<Drawable>(); // a list of all apps drawable images
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
    if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) !=1){ // 'if' is to remove all system applications
    packs.add((String) packageInfo.packageName);
    names.add((String) packageManager.getApplicationLabel(packageInfo));
    icons.add((Drawable) packageManager.getApplicationIcon(packageInfo));
Run Code Online (Sandbox Code Playgroud)

然后把它放在listview上,我用它.

icon = (ImageView) row.findViewById(R.id.appIcon);

icon.setImageDrawable(icons.get(position));
Run Code Online (Sandbox Code Playgroud)

但是,它强制关闭,问题出在icon.setImageDrawable(icons.get(position)); 我该如何解决?

icons android listview imageview android-applicationinfo

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

在Android Studio中运行单个.kt文件

我在Android Studio中创建了一个Scratch Kotlin文件.我只是想运行这个scratch.kt文件并获得输出.

我摆弄了Run Cofigurations但却无法理解将进入Main Class的内容.

在此输入图像描述

kotlin android-studio

3
推荐指数
2
解决办法
880
查看次数