安卓中如何获取保存的uri 并保存到sqlite数据库中
有如下两种方法,仅供参考
方法一:Java代码
public void saveIcon(Bitmap icon) {
if (icon == null) {
return;
}
// 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为是二进制的所以使用字节数组存储数据库的
// BLOB类型
final ByteArrayOutputStream os = new ByteArrayOutputStream();
// 将Bitmap压缩成PNG编码,质量为100%存储
iconcompress(BitmapCompressFormatPNG, 100, os);
// 构造SQLite的Content对象,这里也可以使用
raw ContentValues values = new ContentValues();
// 写入数据库的
BrowserBookmarkColumnsTOUCH_ICON字段 valuesput(BrowserBookmarkColumnsTOUCH_ICON, ostoByteArray());
DBUtilupdate();
//调用更新或者插入到数据库的方法
}
}
方法二:如果数据表入口时一个content:URIJava代码
import androidproviderMediaStoreImagesMedia;
import androidcontentContentValues;
import javaioOutputStream;
// Save the name and description of an image in a ContentValues map
ContentValues values = new ContentValues(3);
valuesput(MediaDISPLAY_NAME, "road_trip_1");
valuesput(MediaDESCRIPTION, "Day 1, trip to Los Angeles");
valuesput(MediaMIME_TYPE, "image/jpeg");
// Add a new record without the bitmap, but with the values just set
// insert() returns the URI of the new record
Uri uri = getContentResolver()insert(MediaEXTERNAL_CONTENT_URI, values);
// Now get a handle to the file for that record, and save the data into it
// Here, sourceBitmap is a Bitmap object representing the file to save to the database
try {
OutputStream outStream = getContentResolver()openOutputStream(uri);
sourceBitmapcompress(BitmapCompressFormatJPEG, 50, outStream);
outStreamclose();
} catch (Exception e) {
Loge(TAG, "exception while writing image", e);
}
原文请看>
最近有需求需要写一下,无障碍模式下获取支付宝,云闪付,微信账单数据,我在网上找了大部分都没有直接点demo,我这里开源了是在CurrentActivityapk基础之上改造的都可以借鉴看一下: >
通过BitmapFactory这个工具类,BitmapFactory的所有函数都是static,这个辅助类可以通过资源ID、路径、文件、数据流等方式来获取位图。大家可以打开API 看一下里边全是静态方法。这个类里边有一个叫做 decodeStream(InputStream is)
此方法可以 解码一个新的位图从一个InputStream。这是获得资源的InputStream。
代码:
Java代码
InputStream is = getResources()openRawResource(Rdrawableicon);
Bitmap mBitmap = BitmapFactorydecodeStream(is);
Paint mPaint = new Paint();
canvasdrawBitmap(mBitmap, 40, 40, mPaint);
意图和意图过滤器Intents and Intent Filters
一个应用程序的三个核心组件-活动,服务和广播接收器是通过消息即意图(Intents)来激活的。Intent息传送是相同或不同应用中组件运行时晚绑定的一种机制。意图本身,一个意图对象,是一个包含被执行 *** 作抽象描述的被动的数据结构-或者,对于广播而言,是某件已经发生并被声明的事情的描述。存在不同的机制来传送意图到每种组件中:
• 一个意图对象是传递给ContextstartActivity()或者ActivitystartActivityForResult()来启动一个活动或者让一个存在的活动去做某些新的事情。
• 一个意图对象是传递给ContextstartService()来发起一个服务或者递交新的指令给运行中的服务。类似的,一个意图能被传递给ContextbindService() 来在调用组件和一个目标服务之间建立连接。作为一个可选项,它可以发起这个服务如果还没运行的话。
• 传递给任意广播方法(例如ContextsendBroadcast(),ContextsendOrderedBroadcast(), 或者ContextsendStickyBroadcast())的意图对象被传递给所有感兴趣的广播接收者。许多种广播产生于系统代码。
在每个例子里,Android系统找到合适的活动,服务,或者一组广播接收者来回应这个意图,必要时实例化它们。这些消息传送系统没有重叠:广播意图仅被传递给广播接收者,永远不会给活动或者服务。一个传送给startActivity()的意图是只会被传递给一个活动,永远不会给一个服务或广播接收者,如此类推。
这篇文档以意图对象的描述开始,然后描述Android映射意图到组件的规则-如何解决哪个组件应该接收一个意图消息。对于没有显式命名一个目标组件的意图,这个过程包括对照与潜在目标相关联的意图过滤器来测试这个意图对象。
意图对象Intent Objects
一个意图Intent对象是一堆信息。它包含接收这个意图的组件感兴趣的信息(例如将要采取的动作和 *** 作的数据)再加上Android系统感兴趣的信息(例如应该处理这个意图的组件类别和如何启动一个目标活动的指令):
组件名称Component name
应该处理这个意图的组件名字 这个字段是一个ComponentName对象- 一个组合物:目标组件的完全合格的类名 (比如"comexampleprojectappFreneticActivity") 以及应用程序描述文件中设置的组件所在包的名字(比如, "comexampleproject") 这个组件名字的包部分和描述文件中设置的包名字不一定要匹配。
组件名字是可选的。如果被设置了,这个意图对象将被传递到指定的类。如果没有, Android使用另外的意图对象中的信息去定位一个合适的目标- 请看本文稍后描述的意图解析Intent Resolution。
组件名字通过如下方法:setComponent(),setClass(), 或者setClassName()设置并通过getComponent()读取。
以上就是关于android 如何获取保存的图片的地址 并存到数据库中全部的内容,包括:android 如何获取保存的图片的地址 并存到数据库中、android如何通过隐式意图寻找手机中能打开图片、音视频的软件,具体代码是怎么写的、Android无障碍模式获取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)