小编Shu*_*shi的帖子

尝试GoogleNetHTTPTransport时“未找到JKS”

我在使用Google授权方面遇到了一些麻烦,而且之前从未使用过任何“涉及Google凭证的”流程。

我的问题发生在创建凭证读取器之后(我认为这意味着我可以正确访问Google凭证的JSON文件),就在从中实例化新的Trusted Transport的行中GoogleNetHTTPTransport。在那里,抛出异常错误:

W/System.err: java.security.KeyStoreException: JKS not found
    at java.security.KeyStore.getInstance(KeyStore.java:649)
    at com.google.api.client.util.SecurityUtils.getJavaKeyStore(SecurityUtils.java:53)
    at com.google.api.client.googleapis.GoogleUtils.getCertificateTrustStore(GoogleUtils.java:74)
    at com.google.api.client.googleapis.javanet.GoogleNetHttpTransport.newTrustedTransport(GoogleNetHttpTransport.java:55)
    at com.example.juans.hasapp.getDataFromSheet.authorize(getDataFromSheet.java:70)
Run Code Online (Sandbox Code Playgroud)

我一直在调查,但是仍然找不到关于这些运输工具如何工作或为什么KeyStore参与此过程的正当而清晰的解释。

我的代码是AsyncTask我用来从Google表格中获取数据的一部分,我目前正试图对其进行访问。在这里,我留下了您的authorize()方法,该方法将检索我并将Credential其传递给我SheetsService。

private Credential authorize(Context context) {
    Resources resources = context.getResources();
    InputStream jsonInput = resources.openRawResource(R.raw.credential_info);
    Reader credentialReader = null;
    try {
        credentialReader = new InputStreamReader(jsonInput);
        Log.v("GoogleAut", "credential reader created");
    } catch (NullPointerException n){
        Log.v("ERROR GoogleAut", "filePath came out empty, no info provided");
    }

    GoogleClientSecrets clientSecrets = null;
    try {
        clientSecrets …
Run Code Online (Sandbox Code Playgroud)

android credentials keystore jks google-oauth2

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

浓缩咖啡测试失败

我正在 Android 中进行一些 Espresso 测试。测试失败并出现此错误:

java.lang.ClassCastException: androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity 无法转换为 com.stavro_xhardha.pockettreasure.MainActivity

这是我的测试方法:

@Test
fun toolbarTitle_shouldContainCorrectInput() {
    val mockNavController = mock(NavController::class.java)
    val fragmentScenario = launchFragmentInContainer<SetupFragment>()
    fragmentScenario.onFragment {
        Navigation.setViewNavController(it.view!! , mockNavController)
    }
    onView(withId(R.id.toolbar)).check(matches(withText("Pick your country")))
}
Run Code Online (Sandbox Code Playgroud)

但是错误不是来自 Test 类,而是来自我的 Fragment under test 。崩溃是在这行代码中执行的:

override fun onStart() {
    super.onStart()
    (activity!! as MainActivity).supportActionBar?.hide() //here
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是,当我在没有测试的情况下正常运行应用程序时,我没有遇到任何错误。

android android-fragments android-testing android-navigation android-espresso

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

未找到任何活动。您是否忘记通过调用 getActivity() 或 startActivitySync 或类似方法启动活动

当我的 android 应用程序第一次启动时FirstActivity。当我点击按钮而FirstActivity不是 start AddTraderActivity。如果我按下按钮“ START REQUEST ”AddTraderActivity然后我打电话:

setResult(RESULT_OK);
finish();
Run Code Online (Sandbox Code Playgroud)

结果AddTraderActivity是破坏和展示FirstActivity。好的。

现在我想为AddTraderActivityTest. 这里测试:

@RunWith(AndroidJUnit4::class)
@SmallTest
class AddTraderActivityTest {

    @get:Rule
    var addTraderActivity: IntentsTestRule<AddTraderActivity> =
        IntentsTestRule(AddTraderActivity::class.java)

    @Test
    fun toolBarHeight() {
        onView(withId(R.id.toolBar))
            .check(matches(withHeightResId(R.dimen.tool_bar_height)))
    }

    @Test
    fun buttonStartTextUppercase() {
        onView(withId(R.id.startButton))
            .check(matches(withTextUppercaseResId(R.string.start)))
    }
}
Run Code Online (Sandbox Code Playgroud)

结果当我开始这个测试时,然后只开始AddTraderActivity并测试成功通过。好的。

现在我想为单击按钮“ START REQUEST ”编写测试

这里测试:

setResult(RESULT_OK);
finish();
Run Code Online (Sandbox Code Playgroud)

结果,当测试运行并按下按钮“ START REQUEST ”时,我收到下一个错误:

测试开始于 16:05 ...

$ adb shell am instrument -w -r   -e debug false -e …
Run Code Online (Sandbox Code Playgroud)

android android-espresso

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

如何显示材质库(版本1.1.0-alpha08)的BottomNavigationView的menuItem的徽标?

我只想补充徽章了menuItem的BottomNavigationView我的应用程序。我使用的BottomNavigationView是材料组件库(版本1.1.0-alpha08),因为它的最新版本是在7天前发布的,所以我没有找到与此相同的任何教程,因为该版本的BottomNavigationView“的showBadge方法,我们不能使用该方法。

我试过了的实例调用getBadge和getOrCreateBadge方法BottomNavigationView。

BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_nav);
    if (bottomNavigationView.getBadge(3) == null) {
        audioPlayingCountBadge = bottomNavigationView.getOrCreateBadge(3);
        audioPlayingCountBadge.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
    } else {
        audioPlayingCountBadge = bottomNavigationView.getBadge(3);
    }
    audioPlayingCountBadge.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

我在android开发中是菜鸟,所以如果有人可以提供详细解决此问题的方法,这将非常感激我。

android material-components material-components-android

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

getParentFragmentManager 中片段与片段管理器异常不关联

我的照片应用程序中有一个片段。当用户编辑照片时,

  1. 我启动一个 AsyncTask 在后台压缩图像,这将返回压缩的图像字节。
  2. 在 postExecute() 中,我调用 editComplete 方法,该方法将使用压缩图像字节更新我的数据模型
  3. 完成后,我调用 getParentFragmentManager 到 popBackStack 将编辑模式删除为图库模式

在这里,在调用 getParentFragmentManager() 时,我收到 IllegalStateException:“Fragment”+this+“与片段管理器不关联。”

我的片段异步任务:

protected class CompressBitmapImageTask extends AsyncTask<Void, Void, byte[]>
{
    private Bitmap editedImageBitmap;
    private BitmapDownscale bitmapDownscale;

    CompressBitmapImageTask(Bitmap editedImageBitmap, BitmapDownscale bitmapDownscale)
    {
        this.editedImageBitmap = editedImageBitmap;
        this.bitmapDownscale = bitmapDownscale;
    }

    @Override
    protected byte[] doInBackground(Void... params)
    {
        BitmapDownscale.BitmapDownscaleResult result = bitmapDownscale.downscaleFromBitmap(editedBitmap, true);
        return result.bitmapBytes;
    }

    @Override
    protected void onPostExecute(byte[] bytes)
    {
        onEditImageComplete(bytes);
    }
} 
Run Code Online (Sandbox Code Playgroud)
protected void onEditImageComplete(@Nullable byte[] editedBitmapData)
{
    if (editedBitmapData != null)
        photoModel.editedBitmapData = …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

MediaBrowserServiceCompat中的onGetRoot()和onLoadChildren()的目的是什么?

我在Android的开发初学者试图建立一个媒体播放器的实现MediaBrowser和MediaSession。

我对onGetRoot()和的功能感到困惑onLoadChildren()。

  1. 我的第一个问题是layman's term这两种方法的目的是什么。
  2. 他们所属的根源是onGetRoot()什么?我要记住的是,它是目录的根目录,对吗?
  3. 孩子们属于onLoadChildren()什么?我想的是根目录中的音乐列表,对吗?
  4. 这会onLoadchildren()返回实际的播放列表吗?

android android-mediasession mediabrowserservicecompat

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

如何创建 Step wise - Android 中的进度条

我想将用户的声音注册为 3 次输入。为此,我想创建一个 UI(XML文件),当第一次录制完成时,它会通过从第 1 步移动到第 2 步来制作动画,这将由开始停止按钮控制。并最终进入第 3 步..... 像这样 -

在此处输入图片说明

我不知道如何向谷歌解释这个!请帮忙!!

android android-progressbar

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

如何修复“找不到媒体按钮接收器”异常

我正在构建媒体播放器,并希望处理来自“播放”、“暂停”等通知的操作。在我的活动中,我注册了MediaButtonReceiver

registerReceiver(MediaButtonReceiver(), IntentFilter(Intent.ACTION_MEDIA_BUTTON))
Run Code Online (Sandbox Code Playgroud)

并创建了媒体通知

val builder: NotificationCompat.Builder = MediaStyleHelper.from(this, mediaSession!!)
builder.addAction(
                NotificationCompat.Action(
                        android.R.drawable.ic_media_previous,
                        "Previous",
                        MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS)
                )
        )
Run Code Online (Sandbox Code Playgroud)

但是当我按下媒体通知上的操作按钮时,没有任何反应。当我添加这些动作时,执行

MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS)
Run Code Online (Sandbox Code Playgroud)

打印到控制台警告

“W/MediaButtonReceiver:在给定的上下文中找不到唯一的媒体按钮接收器,因此无法构建待处理的意图。”

但是,如果我以编程方式注册了它,为什么它没有注册?

android android-mediaplayer android-mediasession

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

如何修复“在 Android 中发现多个文件与操作系统独立路径‘META-INF/DEPENDENCIES’错误

我正在迁移到 google drive api v3 并根据此示例更新依赖项,如下所示:

implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'com.google.http-client:google-http-client-gson:1.26.0'
implementation('com.google.api-client:google-api-client-android:1.26.0') {
    exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.apis:google-api-services-drive:v3-rev136-1.25.0') {
    exclude group: 'org.apache.httpcomponents'
}
Run Code Online (Sandbox Code Playgroud)

但我正面临这个错误:

发现多个文件与操作系统独立路径“META-INF/DEPENDENCIES”

并且无法运行该应用程序

google-drive-api android-studio android-gradle-plugin

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

如何使用 MockK 模拟 kotlin 对象类的方法

我有一个像下面这样的 kotlin 对象类

object DummyClass {

    fun method1() {}
}
Run Code Online (Sandbox Code Playgroud)

我想method1()使用MockK库模拟该函数

因为这是一个模拟正常函数的对象类方法,无法对其进行操作,所以我尝试过如下所示

还尝试了其他一些方法但没有成功

@Test
fun method1Test() {
    val mock = mockk<DummyClass>()
    every { mock.method1() } just runs
    DummyClass.method1()
}
Run Code Online (Sandbox Code Playgroud)

我在 StackOverflow 上看到了一些问题,但仍然没有找到解决我的问题的方法。

kotlin mockk

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

如何更改 Android 中的复选框按钮图标?

CheckBox当我根据给定条件选中复选框时,我想更改按钮图标/图像。在这里,我正在使用 MSQS,如果选中 ANSWER Correct 则更改文本框的图像,类似地,当 Answer check false 然后也更改图像时,我已将图像保存在 drawable 中,请任何人告诉我这是怎么可能的。当 Checkbox 选中一次时,不应再次选中或取消选中它。提前感谢谁会帮助我。

public void onCheckboxClicked(View view) {

    switch(view.getId()) {

        case R.id.chk_ans1ID:
            ans_2.setChecked(false);
            ans_3.setChecked(false);
            ans_4.setChecked(false);

            ans_2.setEnabled(false);
            ans_3.setEnabled(false);
            ans_4.setEnabled(false);

            if (QuizActivity.op1.equalsIgnoreCase(QuizActivity.ans)) {
                correct++;
            } else if (QuizActivity.op2.equalsIgnoreCase(QuizActivity.ans)) {
                ans_2.setChecked(true);
                incorrect++;
            } else if (QuizActivity.op3.equalsIgnoreCase(QuizActivity.ans)) {
                ans_3.setChecked(true);
                incorrect++;
            } else if (QuizActivity.op4.equalsIgnoreCase(QuizActivity.ans)) {
                ans_4.setChecked(true);
                incorrect++;
            } else {
                Toast.makeText(QuizActivity.this, "No Answer Match!", Toast.LENGTH_LONG).show();
                Toast.makeText(QuizActivity.this, "answer= "+ans, Toast.LENGTH_LONG).show();
            }
            break;

        case R.id.chk_ans2ID:
            ans_1.setChecked(false);
            ans_3.setChecked(false);
            ans_4.setChecked(false);

            ans_1.setEnabled(false);
            ans_3.setEnabled(false);
            ans_4.setEnabled(false);
            if (QuizActivity.op2.equalsIgnoreCase(QuizActivity.ans)) {
                correct++; …
Run Code Online (Sandbox Code Playgroud)

xml checkbox android

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