我在基于AOSP的Android 7.1.2(更准确地说是基于sony开放设备树)上正确运行自定义selinux策略时遇到一些麻烦.
我的问题是审计日志不断告诉我我实际添加的文件访问规则丢失.我还将audit2allow创建的规则复制到我的策略文件中,但即使那些规则也没有正常工作.
那么,让我们深入了解细节:
我创建了一个名为vendor_app的自定义域.此域根据其签名分配给应用程序.我在mac_permissions.xml中添加了一个条目来分配seinfo字段供应商.在seapp_contexts中,我像这样分配vendor_app域:
user=_app seinfo=vendor domain=vendor_app type=app_data_file levelFrom=user
Run Code Online (Sandbox Code Playgroud)
我的应用程序在vendor_app上下文中正确启动:
# ps -Z | grep permissiontest
u:r:vendor_app:s0:c512,c768 u0_a109 4110 508 1620732 79584 SyS_epoll_ 0000000000 S com.vendor.android.permissiontest
Run Code Online (Sandbox Code Playgroud)
所以,现在对于根本不起作用的部分.在vendor_app上下文中运行的应用程序将获得/ persist/vendor中文件的读/写访问权限.为了创建nessesary规则,我将一个名为vendor.te的文件添加到设备目录中的sepolicy文件夹中,其中包含以下内容:
type vendor_app, domain;
type vendor_file, file_type, data_file_type;
# permissive vendor_app;
app_domain(vendor_app)
net_domain(vendor_app)
bluetooth_domain(vendor_app)
allow vendor_app persist_file:dir r_dir_perms;
allow vendor_app vendor_file:dir create_dir_perms;
allow vendor_app vendor_file:file create_file_perms;
allow vendor_app audioserver_service:service_manager find;
allow vendor_app cameraserver_service:service_manager find; …Run Code Online (Sandbox Code Playgroud) 我正在关注在Genymotion VM中安装Google Play的指南.导游说要跑adb reboot.我怎么做?
对指南的评论问同样的问题,有人回复说:adb connect 192.168.56.101接着是adb -e reboot.但输入第一个命令会给我错误:
adb server is out of date. killing...
cannot bind 'tcp:5037'
ADB server didn't ACK
* failed to start daemon *
error:
Run Code Online (Sandbox Code Playgroud)
在模拟器上长按电源按钮,在Android内部启用选项以关闭设备但是当我尝试以这种方式关闭设备时(通过Android),模拟器挂起"关闭..."并且不转关闭设备.
Linux Mint 17; Genymotion 2.3.1; Android 4.4.4
我正在尝试将 USB 调谐卡连接到 android 设备(版本 19)。
目前我正在使用 UsbDeviceConnection.requestWait() 读取数据,然后是 16kb 的 UsbRequest.queue。一切正常。
如果调谐器没有输入,USB 将不会接收任何数据。在这种情况下, requestWait() 将永远阻塞。我尝试使用 UsbRequest.close 和 UsbRequest.cancel 但没有用。
我查看了链接“ http://code.google.com/p/android/issues/detail?id=39522 ”,它提到了同样的问题,但需要编写一个新的 JNI 接口。
我的要求是我应该能够摆脱等待并且不想尝试编写新的 JNI 接口(按照上面的帖子)。请建议。
Android Studio中此设计视图错误的原因是什么?
渲染期间引发异常:mBaselineAlignedChildIndex of LinearLayout points to a View that doesn't know how to get its baseline.
这是布局:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mainListView"
android:orientation="vertical">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_btn_btm_actionbar"
android:src="@mipmap/ab_solid_example"/>
<ListView
android:id="@+id/eventStates"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:background="@drawable/listviewimg"
android:drawSelectorOnTop="true"
android:footerDividersEnabled="true"
android:headerDividersEnabled="true"
android:textColor="#000000" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn_cancel_callresult"
android:layout_width="153dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom" android:layout_marginRight="@dimen/abc_action_bar_default_padding_material"
android:background="@color/white"
android:onClick="cancelCallResult"
android:text="Cancel"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我在C/C++中寻找简单的绑定器IPC示例.最近我开始阅读关于Android Binder基本版(http://bharathi.posterous.com/android-binder)并且通过Android源码中的代码也开始阅读.大部分的binder使用部分都是用C++编写的.有人可以解释为什么使用C++而不是C?
该应用程序正在读取通话记录.在大多数设备上都很好,其他一些设备也SecurityException适合READ_CONTACTS(我没有,也不想要我的设备)AndroidManifest.xml.
为什么这样,我能为此做点什么吗?也许,通过投影,这并不能取CACHED_NAME?
我是Android新手,我目前正在研究闹钟应用.但是当我运行它时,我得到了一个NullPointerException.任何人都可以帮助我吗?这是我的代码:
public class MainActivity extends ActionBarActivity {
private Calendar c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView=(TextView)findViewById(R.id.textview1);
final Button setbtn=(Button)findViewById(R.id.setclock);
final Button unsetbtn=(Button)findViewById(R.id.unsetclock);
setbtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
long current=System.currentTimeMillis();
c.setTimeInMillis(current);
int mHour=c.get(Calendar.HOUR_OF_DAY);
int mMinute=c.get(Calendar.MINUTE);
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
Intent intent=new Intent(MainActivity.this, CallAlarm.class);
PendingIntent sender= PendingIntent.getBroadcast(MainActivity.this,
1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
String tmpS= format(hourOfDay)+""+format(minute); …Run Code Online (Sandbox Code Playgroud)