我工作植根设备。我创建了一个应用程序作为系统应用程序运行。以su用户身份从adb shell挂载/ system目录后,我已将apk文件复制到sd卡,然后复制到/ system/priv-app。清单文件看起来如下应用安装在未开始无需重新启动(根)系统/ PRIV应用内
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="abc.def.settings"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.STATUS_BAR" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<service
android:name="abc.def.settings.service.SystemSettingsService" >
</service>
<receiver android:name="abc.def.settings.boot.DeviceBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="abc.def.settings.start_after_reinstall"/>
</intent-filter>
</receiver>
</application>
</manifest>
一旦我复制的APK必须/系统/私法,应用程序,我从壳改变了权限777。该应用程序从设备启动开始非常好。但是我无法在重新启动之前启动服务。我的一个局限性是设备不应该重新启动以启动此服务。
我尝试以下,但没有一次成功。
adb shell am startservice -n abc.def.settings/.SystemSettingsService
adb shell am startservice -n abc.def.settings/.service.SystemSettingsService
adb shell am startservice -a abc.def.settings.start_after_reinstall
adb shell am broadcast -a abc.def.settings.start_after_reinstall
adb shell am broadcast -a abc.def.settings.start_after_reinstall -f 32
有什么我失踪。提前致谢。
原则上你所要做的几乎肯定是一个坏主意,但是你可能需要触发包管理器来重新扫描它在启动时的正常工作方式。不知道是否有办法做到这一点 - 可以安装别的东西*虽然包管理器会这样做。希望在让你的代码在他们的设备上横行之前,人们会长期思考并努力工作。 – 2014-10-17 17:10:43
@ChrisStratton:谢谢你的回复。我正在实施的应用程序不是用于分发,而是运行在我们提供给我们出租车司机的特定设备上。这些设备只运行我们的应用程序,除了几次点击按钮之外,用户将无法控制设备的工作。远程升级应用程序版本需要上述功能。 – nagamanojv 2014-10-18 04:06:12