我在使用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 中进行一些 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
当我的 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) 我只想补充徽章了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开发中是菜鸟,所以如果有人可以提供详细解决此问题的方法,这将非常感激我。
我的照片应用程序中有一个片段。当用户编辑照片时,
在这里,在调用 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的开发初学者试图建立一个媒体播放器的实现MediaBrowser和MediaSession。
我对onGetRoot()和的功能感到困惑onLoadChildren()。
layman's term这两种方法的目的是什么。 onGetRoot()什么?我要记住的是,它是目录的根目录,对吗?onLoadChildren()什么?我想的是根目录中的音乐列表,对吗?onLoadchildren()返回实际的播放列表吗?我想将用户的声音注册为 3 次输入。为此,我想创建一个 UI(XML文件),当第一次录制完成时,它会通过从第 1 步移动到第 2 步来制作动画,这将由开始停止按钮控制。并最终进入第 3 步..... 像这样 -
我不知道如何向谷歌解释这个!请帮忙!!
我正在构建媒体播放器,并希望处理来自“播放”、“暂停”等通知的操作。在我的活动中,我注册了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:在给定的上下文中找不到唯一的媒体按钮接收器,因此无法构建待处理的意图。”
但是,如果我以编程方式注册了它,为什么它没有注册?
我正在迁移到 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”
并且无法运行该应用程序
我有一个像下面这样的 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 上看到了一些问题,但仍然没有找到解决我的问题的方法。
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) android ×9
checkbox ×1
credentials ×1
jks ×1
keystore ×1
kotlin ×1
material-components-android ×1
mockk ×1
xml ×1