Articles of android intent

在我的应用中禁用多指触摸

我的应用程序使用一个Activity来托管多个片段。 每次在电话屏幕上显示一个片段。每个片段的视图由几个图像图标组成。 目前,用户可以用两个手指同时按下两个图标(每个图标按下一个图标)。 我想在我的应用程序上禁用此多点触控function ,以便一次只允许一个图标按下 。 我尝试了以下方法: 方式1:在我的应用主题中,我补充说: false 方式2:在Android Manifest xml中,我添加了: 方式3:在我的活动中: @Override public boolean onTouchEvent(MotionEvent event) { if(event.getPointerCount() > 1) { System.out.println(“Multitouch detected!”); return true; } else return super.onTouchEvent(event); } 不幸的是,我的解决方案都没有用。 那么, 如何在我的应用程序中禁用多点触控function ?

如何通过Android应用程序在谷歌加分享图像?

我已经尝试过此代码,但我没有看到我的帐户中共享的照片。 File file = new File(“sdcard/1346249742258.jpg”); String photoUri = null; photoUri = file.getAbsolutePath(); Intent shareIntent = ShareCompat.IntentBuilder.from(this) .setText(“Sharing an image on Google!”).setType(“image/jpeg”) .setStream(Uri.parse(photoUri)).getIntent() .setPackage(“com.google.android.apps.plus”); startActivity(shareIntent);

如何判断Intent.createChooser选择了哪个应用?

码: Intent launchIntent = new Intent(Intent.ACTION_MAIN); launchIntent.addCategory(Intent.CATEGORY_HOME); Intent chooser = Intent.createChooser(launchIntent, “Complete Action using..”); activity.startActivity(chooser); 我没有看到任何方法来判断选择了哪个Intent(HOME类别启动器)。 没有Inent.addOnActionSetListener,也没有chooser.addOnIntentChosenListener等。那么如何判断哪个被选中? 或者我必须为此编写自己的选择器吗?

隐式和显式意图之间的差异

我对隐式和显式意图之间的区别感到困惑。 隐式和显式意图的目的是什么,为什么使用这些概念? 我是Android应用程序的新手,所以请提供一些示例。

关于Android中自定义权限的几个问题

我正在学习Android编程,我有点理解自定义权限的概念。 根据我的理解,这是自定义权限的工作原理: ‘Base app’可以通过声明自定义权限(即使用清单文件中的标记)和调用受自定义权限保护的活动和服务的’client app’ ‘Base app’来保护其某些组件(例如,活动和服务)需要获取必要的权限(即,使用清单文件中的标签)来调用base app中的这些组件。 但是,我有关于自定义权限的这些问题: 如果自定义权限被声明为危险(即android:protectionLevel=”dangerous” ), client app需要在安装期间获得用户的批准? 如果是这样,用户如何知道这些自定义权限,因为没有任何自定义权限的文档。 在安装期间, client app如何知道base app已安装在用户的手机中? 无论如何, client app是否知道此信息? 安装client app程序后,如果用户决定删除base app程序,会发生什么? 在这种情况下,如果用户尝试使用client app是否会导致任何安全性exception? 我不知道这些问题是否有意义,但它让我想知道自定义权限在实际场景中是如何实际工作的。 谢谢。

从Android Intent打开图库应用程序

我正在寻找一种从意图中打开Android图库应用程序的方法。 我不想返回图片,而只是打开图库以允许用户使用它,就像他们从启动器中选择它一样( View pictures/folders )。 我试图做以下事情: Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_GET_CONTENT); intent.setType(“image/*”); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 但是,这会导致应用程序在我选择图片后关闭(我知道这是因为ACTION_GET_CONTENT ),但我需要打开图库。 任何帮助都会很棒。 谢谢

找不到处理意图action.dial的活动

我正试图让我的应用程序从EditText调用一个数字,但我得到: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.DIAL dat=Ring Tel nr. 123456789 } 我已经搜索了一段时间以获得答案,但大多数答案都是权限并向Manifest添加活动。 如果我做错了,我已经做了两件事。 我在手机上运行它,而不是模拟器。 无论是否使用了intent-filters,我都尝试过。 以下是代码:Manifest: 拨打电话的按钮(从SharedPrefs获取电话号码到下面的a1 🙂 knapp_ring.setOnClickListener(new View.OnClickListener() { Intent call = new Intent(Intent.ACTION_DIAL); @Override public void onClick(View v){ call.setData(Uri.parse(“Telnr:” + a1)); startActivity(call); } });

使用提供的位置和标记启动Google Maps App

从我的应用程序,我想启动谷歌地图应用程序与提供的位置和标记。 标记应指示该给定位置上存在某些内容。 现在,我有以下代码,它以一个Intent和一个提供位置的Google Maps App开始(51.49234,7.43045)。 startActivity( new Intent( android.content.Intent.ACTION_VIEW, Uri.parse(“geo:51.49234,7.43045”))); Google地图应用启动时,它看起来如下所示: 没有显示标记。 我想,谷歌地图应用程序会在该位置显示一个标记,通过意图给出。 是否有任何“隐藏的”Intent URI可用于在Google Maps App中显示标记? 提前致谢。 解 @Rajiv M.向我指出了用给定位置查询周围环境的想法。 因此,解决方案是:使用给定位置作为参数查询给定位置的周围环境。 URI看起来像: geo:51.49234,7.43045?q=51.49234,7.43045 Google地图会将查询结果显示为街道名称: 有点黑客,但似乎运作良好。 为什么不应该使用0,0作为地图位置 geo:0,0?q=51.49234,7.43045 当您使用提供的地图位置点0,0启动Google地图应用时,Google地图应用将开始搜索您当前的设备位置。 这需要时间。 在某些情况下,当没有提供GPS信号时,太多了。 在此之前,Google Maps App将开始搜索您的查询51.49234,7.43045。

Android 4.1 / 4.3 / 4.4电子邮件应用程序中的FileProvider失败,列’_data’不存在

我有一个FileProvider ,我将SD卡上的文件附加到电子邮件时使用。 这适用于使用Intent任何应用中的Lollipop和Marshmallow 。 但是,在Android 4.3使用Email应用程序时,附件会在撰写时显示在电子邮件中,但是当它发送时,在收件人端,附件不存在。 对于所有其他经过测试的应用程序(Gmail,Evernote,Drive)。 我没有在发送电子邮件之前删除该文件。 这是我的代码。 final Intent fileShareIntent = new Intent(android.content.Intent.ACTION_SEND); fileShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, emailSubject); fileShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailText); Uri fileUri = STFileProvider.getContentUriForProvidedFile(this,file); fileShareIntent.putExtra(Intent.EXTRA_STREAM,fileUri); fileShareIntent.setType(mimeType); fileShareIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{prefs.getString(“default_email_preference”, “”)}); startActivity(Intent.createChooser(fileShareIntent,getString(R.string.share_with))); 编辑我find了一个Exception的堆栈跟踪,它符合@ CommonsWare的建议 01-04 17:39:00.430 6828-6828/? W/System.err: java.lang.IllegalArgumentException: column ‘_data’ does not exist 01-04 17:39:00.430 6828-6828/? W/System.err: at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303) 01-04 17:39:00.430 6828-6828/? W/System.err: at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78) 01-04 […]

onNewIntent未被调用

我的情况很奇怪。 有一个应用程序,我决定从第一个应用程序的代码创建另一个。 我复制了.xml文件,复制了.java文件,以便一切正常。 但是有一个巨大的问题:我在第一个项目中调用了onNewIntent(Intent intent)方法,但是在第二个项目中没有调用它(代码是相同的!) 方法,可以触发,但现在无法触发 public void onClick(View arg0) { Intent browserInt = new Intent (Intent.ACTION_VIEW, Uri.parse(“https://oauth.yandex.ru/authorize?response_type=token&client_id=zzzzz”)); browserInt.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(browserInt); } 这是onNewIntent()方法: @Override protected void onNewIntent(Intent intent){ System.out.println(” I WORKED!”); Uri uri = intent.getData(); if (uri!=null) { String m = uri.toString().split(“#”)[1]; String[] args = m.split(“&”); String arg = args[0]; String token = arg.split(“=”)[1]; System.out.println(token); } […]