1、TextView 内容过长时的省略和滚动
android:singleline="true", // 单行
android:ellipsize="" , // start middle end 省略的位置
android: marqueeRepeatLimit="" // marquee 跑马灯 marquee_forever一直滚动
2、调用系统自带的工具传输文件
intent.setAction(Intent.ACTION_SEND).setType("*/*").putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)).
调用蓝牙传输:
setAction(Intent.ACTION_BLUETOOTH);
3、Intent
显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。
隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。
setType和setData方法会清空彼此,android提供了一个setDataAndType()方法解决
- public Intent setData(Uri data) {
- mData = data;
- mType = null;
- return this;
- }
- public Intent setType(String type) {
- mData = null;
- mType = type;
- return this;
- }
4、 ActionBar:
setDisplayHomeAsUpEnabled(boolean enable) 是否显示返回图标
public boolean onOptionsItemSelected(MenuItem item) {
case android.R.id.home:
setDisplayShowTitileEnabled() ...
5、 自定义Theme:
android:elevation ActionBar阴影的宽度 @null没有
android:colorPrimaryDark 屏幕最上面状态栏
android:homeAsUpIndicator actionBar返回箭头 @drawable/ic_arrow_back_24dp
android:actionOverFlowButtonStyle actionBar
<!-- Action bar overflow menu icon. -->
<style name="BlacklistActionBarOverflowQP" parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
<item name="android:src">@drawable/ic_menu_overflow_lt</item>
</style>
6、 Android xliff XML Localization Interchange File Format: xml本地数据交换格式
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="mms_size_expiry">"Message size: <xliff:g id="COUNT">%1$d</xliff:g> KB,   Expires: <xliff:g id="TIME">%2$s</xliff:g>"</string>
mContext.getString(R.string.mms_size_expiry, size, expiry)
%n$s n表示第几个参数, s是字符串
%n$ms m表示的总长度,如果字符串长度大于m,则显示字符串,如果小于,则在字符串后显示相差个数的空格
%n$md m填0
%n$mf m=2.3 格式00.000
7、 获取对短信操作的权限:
Android5.0对于短信的插入和修改权限进行控制,只有系统默认短信应用才能对短信进行操作。权限管理类:
AppOpsManager.java AppOpsService.java
// 获取权限:
PackageManager packageManager = context.getPackageManager();
AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
PackageInfo info = packageManager.getPackageInfo(PACKAGE_NAME, PackageManager.GET_UNINSTALLED_PACKAGES);
boolean isIgnored = AppOpsManager.MODE_IGNORED == appOpsManager.checkOp(AppOpsManager.OP_WRITE_SMS, info.applicationInfo.uid, PACKAGE_NAME);
if (isIgnored) {
// 开启
appOpsManager.setMode(AppOpsManager.OP_WRITE_SMS, info.applicationInfo.uid, PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
}
if (isIgnored) {
// 关闭
appOpsManager.setMode(AppOpsManager.OP_WRITE_SMS, info.applicationInfo.uid, PACKAGE_NAME, AppOpsManager.MODE_IGNORED);
}
Permission;
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
8、 更改系统默认短信应用:
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, selfPackageName);
startActivity(intent);
Telephony.Sms.getDefaultSmsPackage(Context context) // 获取默认短信应用的packageName