我需要将字符串格式化为双尾终止字符串才能使用SHFileOperation.
有趣的部分是我发现以下工作之一,但不是两个:
// Example 1
CString szDir(_T("D:\\Test"));
szDir = szDir + _T('\0') + _T('\0');
// Example 2
CString szDir(_T("D:\\Test"));
szDir = szDir + _T("\0\0");
//Delete folder
SHFILEOPSTRUCT fileop;
fileop.hwnd = NULL; // no status display
fileop.wFunc = FO_DELETE; // delete operation
fileop.pFrom = szDir; // source file name as double null terminated string
fileop.pTo = NULL; // no destination needed
fileop.fFlags = FOF_NOCONFIRMATION|FOF_SILENT; // do not prompt the user
fileop.fAnyOperationsAborted = FALSE;
fileop.lpszProgressTitle = NULL;
fileop.hNameMappings = NULL;
int ret …Run Code Online (Sandbox Code Playgroud) 经过数周的编程后,我决定完成我的申请.上次我无法写文件和阅读,现在我想做.我也许可以使用数据库,但这似乎更容易.我从我复制粘贴代码的地方找到了这个页面.至少现在我能够检查手机上文件的内容(我暂时没有使用任何虚拟SD卡,但它肯定会加速测试).问题在于这个代码,每次我写文件,关闭我的应用程序,然后重新打开它并再次写入文件,文件的内容被重置.
File root = Environment.getExternalStorageDirectory();
File file = new File(root, "tomato50.txt");
if (assignArr.size() > 0) {
try {
if (root.canWrite()) {
FileWriter filewriter = new FileWriter(file);
BufferedWriter out = new BufferedWriter(filewriter);
for (int i = 0; i < assignArr.size(); i++) {
out.write(assignArr.get(i) + "\n");
Toast.makeText(MainActivity.this,
"out: " + assignArr.get(i), Toast.LENGTH_LONG)
.show();
}
out.close();
}
} catch (IOException e) {
Log.e("TAG", "Could not write file " + e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
例如
public class Main {
static final int alex=getc();
static final int alex1=Integer.parseInt("10");
static final int alex2=getc();
public static int getc(){
return alex1;
}
public static void main(String[] args) {
final Main m = new Main();
System.out.println(alex+" "+alex1 +" "+alex2);
}
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我为什么会这样打印:0 10 10?我知道它是一个静态的最终变量,它的值不应该改变,但是理解编译器如何初始化字段有点困难.
在main方法中,子线程使用java 1.5执行器服务机制启动.如何使主线程等到子线程完成?
public class MainClass {
public static void main(String[] args) {
ExecutorService executorService=null;
try {
executorService=Executors.newFixedThreadPool(1);
executorService.execute(new TestThread());
System.out.println("Main program exited...");
} catch (Exception e) {
e.printStackTrace();
} finally {
executorService.shutdown();
}
}
}
public class TestThread extends Thread {
public TestThread() {
}
public void run() {
try {
for (int i=0;i<10;i++) {
System.out.println(i);
TimeUnit.SECONDS.sleep(5);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 根据这篇博客文章以及onStartCommand()如果你有服务的文档,你应该实现onStart()和onStartCommand(),而在2.0及更高版本中只调用onStartCommand().似乎情况并非如此,并且在我的服务中正在调用.这是一个问题,因为它试图完成两次工作,所以我不得不在onStart()中添加一个检查,如果操作系统版本<2.0则不做任何事情.这似乎是一个黑客和一个错误.其他人经历过这个或者我可能有错吗?我从样本中剪切并粘贴了代码.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Util.log(mCtx, "AlerterService", "onStartCommand() called");
handleStart(intent);
return super.onStartCommand(intent, flags, startId);
}
public void onStart(Intent intent, int startId) {
Util.log(mCtx, "AlerterService", "onStart() called");
handleStart(intent);
super.onStart(intent, startId);
}
Run Code Online (Sandbox Code Playgroud) 首先,抱歉我的英语不好,我是西班牙语(并且是Android开发的新手).我正在开发一个简单的蓝牙文件发送器,我一步步基于BluetoothChat android示例.
现在我有一个蓝牙激活请求给用户,并选择是或否选项应用程序崩溃.
我有在Manifest中声明的权限.
问题是,如果用户选择是激活蓝牙,蓝牙实际上会激活,但应用程序仍然会崩溃.
我不知道ACRA是否与此冲突,我正在使用它,因为mi设备是huawei u8650而且我没有找到usb驱动程序直接在eclipse中运行app,所以我每次都移动.apk文件时间到SD卡.
这是清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.BTSender"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:name="MyApplication">
<activity
android:name=".BluetoothSenderActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
这是主要的(也是唯一的)活动:
package com.BTSender;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class BluetoothSenderActivity extends Activity {
private BluetoothAdapter BTAdapter;
private String TAG = "BTSender";
private final int REQUEST_ENABLE_BT = 2; …Run Code Online (Sandbox Code Playgroud) 在各种学校项目中,我一直在使用Java平台,Java,java,c ++,python和PHP.现在我对它感觉更舒服了,我希望有一些关于如何设置它的更准确的说明.我在windows7上 - 我已经在我的Dropbox中删除了eclipse本身并根据需要创建了工作区但最终导致混乱的设置传播到各处以及各种错误(当我尝试更新到Juno时出现 - 现在功能像模板坏了).
那么为各种语言设置eclipse的推荐方法是什么?我应该下载最新版本,添加我需要的插件(cdt,pdt等),然后为不同的语言创建不同的工作区(如eclipse_python,eclipse_java,eclipse_javaEE等)?你如何设置Eclipse?
当我离开FragmentActivity并转到ListActivity时,我收到一个NullPointerException.在我获得Force Close之前,我实际上开始看清单.但是LogCat引用了我刚刚来自的Activity.
LogCat说:
08-31 07:38:53.356: E/AndroidRuntime(8134): FATAL EXCEPTION: main
08-31 07:38:53.356: E/AndroidRuntime(8134): java.lang.NullPointerException
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481)
08-31 07:38:53.356: E/AndroidRuntime(8134): at com.---.myApp.MasterCat.onSaveInstanceState(MasterCat.java:119)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.Activity.performSaveInstanceState(Activity.java:1137)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1215)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3077)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3136)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.access$900(ActivityThread.java:142)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1235)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.os.Handler.dispatchMessage(Handler.java:99)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.os.Looper.loop(Looper.java:137)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.main(ActivityThread.java:4928)
08-31 07:38:53.356: …Run Code Online (Sandbox Code Playgroud) 我已经看过registerReceiver必须调用它的帖子(在清单中没有定义)以接收ACTION_BATTERY_LOW意图.
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
//....
registerReceiver(new BatteryLevelReceiver(), new IntentFilter(
Intent.ACTION_BATTERY_LOW));
}
// .......
}
Run Code Online (Sandbox Code Playgroud)
广播接收器
public class BatteryLevelReceiver extends BroadcastReceiver
{
private static final String TAG = BatteryLevelReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "onReceive");
}
}
Run Code Online (Sandbox Code Playgroud)
我没有在logcat中看到"onReceive"日志语句.我正在使用模拟器来模拟电池低电量状态,使用telnet 5554和执行power capacity 10.我确实看到模拟器中的电池状态发生了变化但没有触发意图.
此外,如果我必须registerReceiver()在一个活动内部打电话而我没有打电话unregisterReceiver,onStop或者onDestroy它可以吗?如果不行,即使我的应用程序不在前台,我将如何注册接收器以接收系统意图?(除了使用清单).
我正在注册接收器onResume():
registerReceiver(wifiConnectivityReceiver, new
IntentFilter(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION));
Run Code Online (Sandbox Code Playgroud)
这是接收器本身:
class WiFiConnectivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED,false)){
Log.d(TAG,"Connected to network!");
} else {
Log.d(TAG,"Could not connect to network!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我能够连接到选定的WiFi网络,但这SUPPLICANT_CONNECTION_CHANGE_ACTION永远不会被解雇.如果我将其更改SUPPLICANT_STATE_CHANGED_ACTION为例如它正在工作.
我正在研究ICS.
是否有其他人因此意图遇到这样的问题?