我没有在网上找到任何参考.只是一些具有相同线路的logcat,显然来自Android 4.2+,可能来自CyanogenMod设备,比如我拥有的GT-I9100.
在Eclipse中开发我的Android应用程序,我偶尔会在LogCat视图中使用我的应用程序包名称进行自动过滤.所以它似乎来自我的应用程序,或者至少是由我的应用程序引起的.
完整的一行是: Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value
该应用与此类Android全局设置无关.
任何提示?
谢谢.
我已经彻底搜索了网络以找到答案,但没有结果.
我已在我的Android应用中实现了一些"偏好设置",包括在任何您想要的位置保存文件的功能.
如果我选择所谓的"集成SD卡"上的路径,一切都OK.但我也有一个"真正的"外部SD卡,安装(对我来说)/storage/sdcard1符号链接到/extSdCard与/mnt/extSdCard(虽然"内部" SD卡是/storage/sdcard0用符号链接/sdcard和/mnt/sdcard).
在ICS上我有外部/emmc加上一些我不记得的链接.
问题是,如果我选择指向此的路径extSdCard,应用程序将创建文件夹结构,但不会写入下载的文件,以"SecurityException"结尾,"目标必须在外部存储上".
但这条路径在外部存储上!更多:如果存在写入权限的问题,为什么要创建文件夹?(android.permission.WRITE_EXTERNAL_STORAGE出现在清单中).
我很可能做错了什么; 或者也许是一些bug?
Eclipse日志:
11-30 11:58:29.143: D/ShareActivity(24752): doInBackground...
11-30 11:58:33.813: D/ShareActivity(24752): The response is: 200
11-30 11:58:50.283: D/ShareActivity(24752): location: Downloads
11-30 11:58:50.443: D/ShareActivity(24752): User defined folders created
11-30 11:58:50.443: D/ShareActivity(24752): path: /storage/sdcard1/temp
11-30 11:59:07.053: D/ShareActivity(24752): downloadUri: file:/storage/sdcard1/temp/test.3gpp
11-30 11:59:07.313: D/AndroidRuntime(24752): Shutting down VM
11-30 11:59:07.318: W/dalvikvm(24752): threadid=1: thread exiting with uncaught exception (group=0x41ce3300)
11-30 11:59:07.318: E/AndroidRuntime(24752): …Run Code Online (Sandbox Code Playgroud) 请不要指向如何包装偏好标题?因为它不适用于(如我所评论的)您使用@strings/对strings.xml文件的引用的情况.
如果你使用
android:title="@string/some_string"
并把
<string name="some_string">the string I want \n to wrap</string>
进入strings.xml,\n被忽略.
当需要在首选项中执行特定的用户交互时,我使用startActivity(new Intent(this, SettingsActivity.class))fromActivity来调用我的应用程序的 。PreferenceFragment我认为向下滚动以到达所涉及的首选项会很好。
我找到了有关如何将视图滚动到ScrollViews 和ListViews 的解决方案,但没有与PreferenceFragments 相关的解决方案。
我的偏好如下:
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
public static class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
//preferences:
private Preference p
// [...]
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
//preference click listeners...
p = (Preference) findPreference("PR_NAME");
p.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean …Run Code Online (Sandbox Code Playgroud) 编辑:我知道可能重复,但答案不直接适用。我正在使用 ProcessBuilder 而不是 Runtime.getRuntime().exec:
public int execProcess(List<String> cmds, ShellUtils.ShellCallback sc) {
StringBuilder cmdlog = new StringBuilder();
for (String cmd : cmds) {
cmdlog.append(' ');
}
Utils.logger("v", cmdlog.toString(), DEBUG_TAG);
ProcessBuilder pb = new ProcessBuilder();
pb.directory(mBinFileDir);
pb.command(cmds);
Process process = null;
int exitVal = 1; // Default error
try {
process = pb.start();
StreamGobbler errorGobbler = new
StreamGobbler(process.getErrorStream(), "ERROR", sc);
StreamGobbler outputGobbler = new
StreamGobbler(process.getInputStream(), "OUTPUT", sc);
errorGobbler.start();
outputGobbler.start();
exitVal = process.waitFor();
sc.processComplete(exitVal);
} catch (Exception e) {
Log.e(DEBUG_TAG, "Error executing ffmpeg …Run Code Online (Sandbox Code Playgroud)