android 获取系统默认路径 :
Environment.getDataDirectory().getPath() : /data
Environment.getDownloadCacheDirectory().getPath() : /cache
Environment.getExternalStorageDirectory().getPath(): /mnt/sdcard
Environment.getRootDirectory().getPath() : /system
Context.getCacheDir().getPath() : /data/data/com.zhd/cache
Context.getExternalCacheDir().getPath() : /mnt/sdcard/Android/data/com.zhd/cache
Context.getFilesDir().getPath() : /data/data/com.zhd/files
Context.getObbDir().getPath() : /mnt/sdcard/Android/obb/com.zhd
Context.getPackageName() : com.zhd
Context.getPackageCodePath() : /data/app/com.zhd-1.apk
Context.getPackageResourcePath() : /data/app/com.zhd-1.apk
分割线:
<android.support.v4.widget.Space
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#eeeeee"/>
补充:关于动态添加类属性的解决方案
解决:通过参数直接添加类属性不容易实现,那我们可以转换下思路,通过控制json,然后再转成类相关的属性
关于版本升级:
versionCode版本高的可以覆盖低的,低的无法覆盖高的
(包名和签名一致的情况下)
系统sdk版本:
//SDK_INT:系统sdk版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Log.d("TAG", "支持cpu架构:"+ Arrays.toString(Build.SUPPORTED_ABIS));
}
打印:支持cpu架构:[arm64-v8a, armeabi-v7a, armeabi]
关于static在类中什么时候被执行:
当使用该类时,该类中的static先执行,未使用到该类,则类中的static不会被执行到。同理也适用于该类的成员变量
应用间的跳转:
应用a:代码中执行intent操作
Intent intent = new Intent();
ComponentName comp = new ComponentName("com.example.myappb", "com.example.myappb.B_Activity");//参数:包名,全类名
intent.setComponent(comp);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("other", "true");
intent.setAction("android.intent.action.VIEW");
startActivity(intent);
应用b的activity,需要在应用b的清单文件中配置一下才能被跳转成功
<!--声明该activity可能会被其他应用intent,注意:必须配置不然其他应用无法跳转到该activity-->
<activity android:name=".C_Activity">
<intent-filter>
<!--固定不变-->
<action android:name="android.intent.action.VIEW" />
<!--固定不变-->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
服务:
service没有onactivityresult方法
activity有onactivityresult方法
异常:
Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
关于include id:
root.findViewById(R.id.avchat_video_layout) 代表了include指向的xml文件对象
(include标签findViewById得到的对象就是inflate了该xml的对象)
注意:
1. inflate出来视图的中的id无法添加碎片事务
2. avchat_video_layout的文件的跟布局不可设置id,find出来为null
<!--顶层基础功能界面-->
<include
android:id="@+id/avchat_video_layout"
layou