Articles of android intent

意图开始导航活动

在我的应用程序中,我可以选择开始导航到选定的POI。 基本上我想要的是从我的应用程序中启动一个转弯导航器。 问题是我不知道安装了哪个(如果有的话)导航器。 那么,问题是如何通过显示一个合适的活动列表来启动一个意图,以便首先导航给用户,让他选择他想要使用哪一个? 也很高兴find一种方法将额外的parameter passing给选定的活动(这听起来像是一个问题,因为不同的导航应用程序使用不同的名称为他们的额外,我猜)。 如果不清楚:我正在寻找一种方法来显示一个适用于导航的应用程序列表,并选择使用一个默认值。 编辑:在这里find实施http://datamoil.blogspot.com/2011/04/android-universal-intent-to-start.html

IntentService创建的通知始终使用错误的Intent

问题 当用户按下发送“按钮1” (向下滚动以查看应用程序的构造)时,将从RefreshService创建新的Notification 。 如果用户按下此通知, MainActivity实例将启动并在Intent接收值为Button 1的String 。 显示该值。 当用户现在按下发送“按钮2”时,将从RefreshService创建新的Notification 。 如果用户按下此通知, MainActivity实例将启动并在Intent接收一个String ALSO ,其值为Button 1 。 所以你可以猜到,通常应该有值Button 2 。 当用户按下的第一个按钮是发送“按钮2”时 ,总是会发送Button 2 。 获得第二个按钮值的唯一解决方案是重新启动手机并先按第二个按钮。 即使强行关闭也行不通。 我知道我也可以用另一种方式更改UI。 但是我需要在app中使用这种方法,我需要用另一个Intent重新启动’MainActivity’,所以方法应该是相同的。 施工 一个名为MainActivity的Activity 一个名为RefreshService的IntentService 主要活动 public class MainActivity extends Activity implements View.OnClickListener { public static final String RECEIVED = “received”; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); […]

我应该如何通过活动链转发Intent参数?

我有许多活动与Intents链接在一起,而一些Intents需要在附加组件Bundle中传递参数。 当我必须通过多个活动转发参数时,我应该明确地复制每个参数还是有最佳实践方法? 例如,我可以克隆复制当前的Intent作为调用其他子任务Intents的起点,这可能(可能)复制所有以前的Bundle参数。 举个例子,假设你有一个文件浏览器Activity,它有两种模式:Expert和Novice。 您希望将此状态传递给某个子任务Activity,如文件属性页,您可以在启动它之前通过调用Intent上的putExtra(“skillLevel”,“Expert”)来执行此操作。 现在,如果属性页面还有一个子任务Activity,例如压缩选项,你应该如何转发“skillLevel”参数?

Android.widget,textView无法强制转换为android.widget,按钮

启动我的活动时我一直收到运行时错误,并说android.widget.textview无法转换为android.widget.button? XML: 这里发生了什么? 我已经经历了几次而找不到任何东西 编辑: 09-17 18:28:51.485: E/AndroidRuntime(724): FATAL EXCEPTION: main 09-17 18:28:51.485: E/AndroidRuntime(724): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.intent_buttontests/com.example.intent_buttontests.PlayScreen}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Button 09-17 18:28:51.485: E/AndroidRuntime(724): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 09-17 18:28:51.485: E/AndroidRuntime(724): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 09-17 18:28:51.485: E/AndroidRuntime(724): at android.app.ActivityThread.access$600(ActivityThread.java:123) 09-17 18:28:51.485: E/AndroidRuntime(724): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 09-17 18:28:51.485: E/AndroidRuntime(724): at android.os.Handler.dispatchMessage(Handler.java:99) 09-17 18:28:51.485: E/AndroidRuntime(724): […]

如何在android中处理浏览器的“共享页面”意图?

我在这里阅读( http://androidlittle.blogspot.com/2009/08/intent-filter-for-share-link.html )需要什么intent-filter来处理android web浏览器发送的“共享链接”意图。 我把它放在我的AndroidManifest.xml中的一个块里面,如下所示: 我不能为我的生活让这个被触发。 当我在Android浏览器中共享链接时,模拟器日志显示它正在创建选择器意图,但不提供选择器正在执行的意图的详细信息。 popup没有选择器窗口,意图由SMS应用程序处理。 我也尝试手动启动意图: adb shell am start -D -a android.intent.action.SEND -c android.intent.category.DEFAULT -t text/plain -d http://google.com/ 但我得到的回应是: Starting: Intent { act=android.intent.action.SEND cat=[android.intent.category.DEFAULT] dat=http://google.com/ typ=text/plain } Error: Activity not started, unable to resolve Intent { act=android.intent.action.SEND cat=[android.intent.category.DEFAULT] dat=http://google.com/ typ=text/plain flg=0x10000000 } 谁能告诉我我做错了什么? 我的主(启动器)活动工作正常,所以我假设在模拟器上安装没有问题。

检测耳机是否插入Android设备。

如何确定耳机是否插入Android设备?

为什么ITelephony.aidl有效?

我看到一些SOpost讨论了如何以程序方式结束电话,例如, 这个 。 是的,人们专注于结果,但没有人真正解释它为什么起作用的原因? 我尝试了代码,效果很好。 但是我想了解更多关于底下发生的事情的细节? 为什么通过创建ITelephony.aidl ,我们的项目中暴露了android隐藏的内部ITelephony接口? 我们自己如何创建ITelephony.aidl和自动生成的java(/gen/ITelephony.java) 链接到 android的ITelephony界面? 是否只是因为名称匹配(包名和援助文件名)? TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); Class c = Class.forName(tm.getClass().getName()); Method m = c.getDeclaredMethod(“getITelephony”); m.setAccessible(true); //Why does the android internal ITelephony interface is exposed after created the ITelephony.aidl? com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke(tm); telephonyService.endCall();

将位图保存到文件function

我正在尝试使用我创建的函数直接将位图保存到文件和特定文件。 它不起作用。 它在bitmap.compress部分之后崩溃(在here3之前)。 File dir = new File(filepath); if(!dir.exists())dir.mkdirs(); File file = new File(Environment.getExternalStorageDirectory() + filepath, side + “.png”); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut); fOut.flush(); fOut.close(); System.out.println(filepath); bitmap.recycle(); System.gc(); 错误日志: 06-29 00:16:38.089: D/AndroidRuntime(3260): Shutting down VM 06-29 00:16:38.089: W/dalvikvm(3260): threadid=1: thread exiting with uncaught exception (group=0xb587f4f0) 06-29 00:16:38.089: E/AndroidRuntime(3260): FATAL EXCEPTION: main […]

如何在android中选择和裁剪图像?

嘿,我目前正在制作一个动态壁纸,我允许用户选择一个将落后于我的效果的图像。 目前我有: Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); i.putExtra(“crop”, “true”); startActivityForResult(i, 1); 稍微下: @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) if (resultCode == Activity.RESULT_OK) { Uri selectedImage = data.getData(); Log.d(“IMAGE SEL”, “” + selectedImage); // TODO Do something with the select image URI SharedPreferences customSharedPreference […]

向拨号器发送暂停

与在Android中发送暂停和DTMF输入类似,我正在尝试将暂停字符“,”发送到拨号器。 这适用于HTC Sense手机甚至Xoom,但不适用于Nexus One或T-Mobile G2等“股票体验”手机(我怀疑是摩托罗拉Droid)。 这些手机似乎有一个拨号器试图漂亮格式化数字(即添加破折号),并在点击逗号字符时停止。 有趣的是,它不会阻塞“p”字符,尽管它会删除“p”并继续添加数字。 这是ActivityManager看到的内容: I/ActivityManager( 92): Starting activity: Intent { act=android.intent.action.DIAL dat=tel:8883333,444 cmp=com.android.contacts/.DialtactsActivity } 我也尝试了编码forms,“tel:8883333%2C444”,这些手机的行为没有区别。 我已经尝试了“p”,如上所述,但这些字符被删除导致拨号器888-333-3444填充不正确,我不确定“p”是否正确。 所以,问题是:有没有办法指定一个适用于大多数或所有Android拨号程序的暂停?