小编zir*_*ion的帖子

Intent过滤器:intent.getData()返回null

我正在Android中编写图像编辑器.到目前为止它只有一个活动.从这个活动,我可以使用调用Gallery活动的菜单选项加载图像,在onActivityResult中我将接收到的图像处理为画布,以便我可以编辑它.这工作正常.

我现在要做的是让这个活动可以从其他任何地方调用,所以我不必从活动内部选择一个图像,我可以打开图库,选择一张照片并将其发送到我的应用程序.但我无法弄清楚如何.

在我的清单上,我在<activity>标签内添加了以下内容:

<intent-filter>
   <action android:name="android.intent.action.SEND" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:mimeType="image/*" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

然后,在我的活动中,如http://developer.android.com/training/basics/intents/filters.html中所述,我将以下内容放在onCreate()中:

...
//after initializing my view and stuff

Intent intent =getIntent();
Uri image = intent.getData();

//code to do something with my uri
...
Run Code Online (Sandbox Code Playgroud)

当我在手机中安装应用程序然后打开图库时,我可以选择图像并使用"发送"菜单,我的应用程序将显示在应用程序列表中,但是当我选择它时,我的应用程序会打开但忽略图像.事实证明,我得到的uri intent.getData()是空的,我无法弄清楚为什么.

我做错了吗?我忘记了什么吗?如果你必须知道,我使用随附的CoolIris画廊购买了Android 2.3.

android image android-manifest android-intent android-activity

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

在Android源中添加预构建的二进制文件

我有一个本机二进制文件,我想将其包含在Android的源代码中,因此当我编译它时,我的二进制文件将包含在/ system/bin中.

我已经将我的二进制文件复制到文件夹/ p​​rebuilt/android-arm/my-binary中了,我创建了一个新的Android.mk,其中包含以下内容:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := my-binary
LOCAL_MODULE := my-binary
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)
Run Code Online (Sandbox Code Playgroud)

但是当我运行make时,我在日志中得到的唯一引用如下:

target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)
Run Code Online (Sandbox Code Playgroud)

并且二进制文件根本没有安装到system.img中.在Android上安装预置二进制文件时有一个几乎完全相同的问题:"找不到",但提问者已经知道了基本程序,并且根本没有解释.如果我运行make my-binary,我会得到我发布的同一行.

我也试过运行make out/target/product/generic/system.img my-binary但它也不起作用.我的二进制文件显示在out子文件夹中,但它不会包含在system.imng中

我错过了什么吗?有没有办法让只运行make -j#我的二进制文件将包含在/ system/bin中?

android android-build android-source

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