Tag: android intent

如何检查ContentProvider可用于Intent(或阻止特定的一个)

我使用Intent机制让用户通过标准的方式选择图像 val intent = Intent(Intent.ACTION_GET_CONTENT) intent.type = “image/*” intent.addCategory(Intent.CATEGORY_OPENABLE) ctx.startActivityForResult(intent, RequestCodes.SelectPhoto) 然后我将Uri传递给另一个活动,可能会裁剪照片。 我需要之前的Uri做一些预先检查。 在Android模拟器上,像Photos(默认)这样的默认提供程序会让我的整个应用程序有权打开Uri,而不仅仅是请求活动。 然而,在亚洲有一个“奇怪”的提供者, com.miui.gallery.provider.GalleryOpenProvider并没有 – 在com.miui.gallery.provider.GalleryOpenProvider器中发生了一个邪恶的SecurityException。 所以我尝试使用ACTION_OPEN_DOCUMENT,根据规范说,它会给我的整个应用程序权限,直到设备重新启动,但不幸的是,一个不支持在模拟器云中的谷歌照片。 所以我正在寻找一种方法来确定是否将列表中的com.miui.gallery.provider.GalleryOpenProvider在com.miui.gallery.provider.GalleryOpenProvider ,如果是这样,要么阻止它,否则回落到使用ACTION_OPEN_DOCUMENT。 我希望避免在把Uri交给收割机之前将其拷贝,作物活动无论如何都将其视为只读。 这是启动作物(kotlin)的全部function。 CropActivity是对旧版开源图库应用com.android.gallery3d的修改。 private fun startCrop(ctx: Activity, uri: Uri) { val intent = Intent(ctx, CropActivity::class.java) intent.data = uri val file = this.createImageFile(ctx, “photofinal”) if (file == null) { this.showStorageUnavailable(ctx) return } val outputUri = […]

通用对值types的意图额外

很简单的问题:是否有可能find第二对参数(字符串,INT,捆绑等)通用的意图额外types? inline fun Context.startActivity(vararg params: Pair) { val intent = Intent(this, T::class.java) params.forEach { intent.putExtra(it.first, it.second) } startActivity(intent) } 谢谢

用于在Android中启动新Activity的多个Intent标志

我试图在Intent中添加更多的标志,以便在BroadcastReceiver中启动一个新的Activity,响应从应用程序的另一部分发送的特定意图。 我已经添加,因为我注意到了LogCat消息在我创建的意图FLAG_ACTIVITY_NEW_TASK标志,然后其他的,但我在LogCat中得到相同的错误,因为FLAG_ACTIVITY_NEW_TASK不在那里。 代码如下: public class actReceiver extends BroadcastReceiver { … public void onReceive(Context context, Intent intent) { … else if (intent.getAction().equals(“something”)) { Intent prefAct = new Intent(context, PreferencesActivity.class) prefAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) .setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) .setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(prefAct); } … } … } 而特定的LogCat错误: Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is […]

Google的Duo应用程序支持哪些Android或Android应用程序?

我们可以通过意向通过Google Duo开始新的video通话吗? 我们可以启动到应用程序内的任何特定的屏幕? 我们目前支持从我们的应用中发起环聊,我们也想添加Duo支持。

如何直接从我的Android应用程序打开Goog​​le Play商店?

我已经打开谷歌Play商店使用follwing代码 Intent i = new Intent(android.content.Intent.ACTION_VIEW); i.setData(Uri.parse(“https://play.google.com/store/apps/details?id=my packagename “)); startActivity(i);. 但它显示了一个完整的行动视图选择选项(浏览器/播放存储)。 我需要直接在Playstore中打开应用程序。

如何在Android应用程序中打开Youtubevideo链接?

我的问题与其他有关如何打开YouTube链接的问题不相似。 我的问题是如何打开一个YouTube链接,然后当它在应用程序中打开时,它应该关闭YouTube应用程序,并再次打电话给我的MainActivity打开YouTube应用程序。 然而,它应该从scrath打开YouTube应用程序,而不是只显示在后台运行的以前的YouTube活动。 MainAcitivy – > SecondActivity – > Youtube – > ThirdActivity – > Youtube 但我希望YouTube应用程序从头开始重新加载。 但目前,我正在获取之前在后台打开的YouTube应用程序。 主要活动 Intent intent = new Intent(MainActivity.this,ThirdActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); SecondActivity startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(link))); sleep(10000); Intent intent=new Intent(getApplicationContext(),ThirdActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); ThirdActivity sleep(5000); Toast.makeText(getApplicationContext(),”third”,Toast.LENGTH_SHORT).show(); Intent intent=new Intent(getApplicationContext(),SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); 我想每次都从头开始加载它,但是它向我显示了暂停的状态。 如果你不明白我的问题,请自由发表评论,我会尽力详细说明。 […]

Android:stopService在另一个Activity中

如何在另一项活动中停止我的服务? 我在summaryActivity中启动服务 SocketServiceIntent = new Intent(this, SocketService.class); SocketServiceIntent.putExtra(“MessageParcelable”, mp); startService(SocketServiceIntent); 并从我的summaryActivity启动我的statusActivity Intent intent = new Intent(SummaryActivity.this, StatusActivity.class); intent.putExtra(“MessageParcelable”, mp); startActivity(intent); 我的问题是,我不知道如何可以给我的状态活动SocketServiceIntent。

覆盖意图额外

我使用下面的代码创建通知(Kotlin) val builder = NotificationCompat.Builder(ctx) …….. .setContentIntent(PendingIntent.getActivity(ctx, 891, ctx.newIntent() .putExtra(“id”, member.id) .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT), 0)) 所以当通知被点击MainActivity将选择用户,从哪个通知到达。 override fun onNewIntent(intent: Intent?) { val id = intent?.getStringExtra(“id”) ?: return selectUser(extra) } 我从2个不同的用户发送2个通知。 点击第一次通知后,它工作正确(id == _ User1UUID)并选择用户。 然后我按回来,从第二个用户发送另一个通知,点击它,意图仍然包含以前的用户ID并选择它(通过断点检查)。 我知道,这是因为FLAG_ACTIVITY_REORDER_TO_FRONT ,但我必须只保留MainActivity一个实例。

如何使用espresso测试DeepLinks

我想为我所有的深层链接添加测试,启动它们并查看是否启动了所需的活动,并断言活动中显示的内容。 我该怎么做? 编辑 我结束了测试只是深入链接匹配,如https://medium.com/@singwai/testing-deep-linking-with-espresso-and-burst-5e1bdb3c5e29说。 在kotlin: @Throws(Exception::class) fun test_deepLink_isResolvedBy(url: String, canonicalActivityName: String) { val appContext = InstrumentationRegistry.getTargetContext() val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) val resolvedActivities = appContext.packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL) val resolverActivityMissing = resolvedActivities.none { it.activityInfo.packageName == appContext.packageName && it.activityInfo.name == canonicalActivityName } if (resolverActivityMissing) { fail(“$url is not resolved for $canonicalActivityName”) } } 然后我检查是否有活动解决我的url,并测试每个活动在自己的测试。

将预先计算的结果从一个Kotlin活动发送到另一个文本视图

我目前正在计算我的主要活动。 计算在下面的函数中完成。 结果显示在同一屏幕上的文本框中。 ShowNumber.setText(buClickValue) Bill = buClickValue fun buCalculateEvent(view: View) { var Total = “%.2f”.format(Bill.toDouble() * .15) ShowNumber.setText(“Based on a 15% tip, you would be ” + ( Bill.toDouble() + Total.toDouble())) } 我的问题是试图让setText消息出现在另一个活动。 我知道如何通过点击一个按钮访问活动。 我也知道如何在另一个活动中生成吐司消息。 我怎样才能将信息发送到另一个活动的文本视图? 提前致谢。