編輯:關於Android編程
如果我們在文件浏覽器中點擊一個文件,然後點擊它,會彈出一個列表給你選擇
如果使自己的應用也出現在這個列表上,必須在menifest的這個activity下加入:
Intent intent = this.getIntent();
int flags = intent.getFlags();
if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
if (intent.getAction() != null && Intent.ACTION_VIEW.equals(intent.getAction())) {
if (SCHEME_FILE.equals(intent.getScheme()) || SCHEME_CONTENT.equals(intent.getScheme())) {
String i_type = getIntent().getType();
// mImportingUri=file:///storage/emulated/0/Vlog.xml
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
mImportingUri = intent.getData();
System.out.println(====mImportingUri= + mImportingUri);
InputStream is = null;
try {
is = getContentResolver().openInputStream(mImportingUri);
} catch (Exception e) {
System.out.println(====e=+e);
}
if (mImportingUri != null && SCHEME_FILE.equalsIgnoreCase(mImportingUri.getScheme())) {
//Is file
startToCopyFile(is);
}else if(mImportingUri != null && SCHEME_CONTENT.equalsIgnoreCase(mImportingUri.getScheme())){
startCopyMedia(is);
}
}
}
}
private boolean startCopyMedia(InputStream is) {
Cursor c = null;
try {
c = getContentResolver().query(mImportingUri,
new String[] {MediaStore.MediaColumns.DISPLAY_NAME, MediaStore.MediaColumns.SIZE},
null, null, null);
if (c != null && c.moveToFirst()) {
int dn_index = c.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME);
fromFileName = c.getString(dn_index);
int s_index = c.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE);
fromFileSize = c.getLong(s_index);
}
} catch (Exception e) {
System.out.println(===query e=+e);
}
return true;
}
public static void makesureFileExist(String path) {
String separator = File.separator;
int index = path.lastIndexOf(separator);
path = path.substring(0, index);
File f = new File(path);
f.mkdirs();
File f1 = new File(path);
try {
f1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getSDPath(){
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED); //判斷sd卡是否存在
if(sdCardExist)
{
sdDir = Environment.getExternalStorageDirectory();//獲取跟目錄
}
if(sdDir!=null){
return sdDir.toString();
}else
return null;
}
private String getName(Uri uri) {
String str = uri.toString();
int index = str.lastIndexOf(File.separator);
String name = str.substring(index,str.length());
return name;
}
private boolean startToCopyFile(InputStream is) {
String fileName = getSDPath()+tmpPath+File.separator+getName(mImportingUri);
makesureFileExist(fileName);
File toFile = new File(fileName);
CopyThread mCopyThread = new CopyThread(is, toFile);
new Thread(mCopyThread).start();
return true;
}
private class CopyThread implements Runnable {
private File toFile;
private InputStream fosfrom = null;
public CopyThread(InputStream fosfrom, File toFile) {
this.fosfrom = fosfrom;
this.toFile = toFile;
}
@Override
public void run() {
try {
TimeUnit.MILLISECONDS.sleep(800);
FileInputStream fosfrom = null;
if (this.fosfrom != null) {
fosfrom = (FileInputStream) this.fosfrom;
}
FileOutputStream fosto = new FileOutputStream(toFile);
byte bt[] = new byte[1024];
int c;
int time = 0;
while ((c = fosfrom.read(bt)) > 0) {
fosto.write(bt, 0, c);
}
if (fosfrom != null) {
fosfrom.close();
}
fosto.close();
} catch (Exception e) {
return;
} finally {
try {
if (this.fosfrom != null) {
this.fosfrom.close();
}
} catch (IOException e) {
}
}
}
}
Android中的網絡技術基礎用法
有的時候用多了Android的一些開源框架用多了,就會把最基礎的一些東西給忘了,今天來重溫一下Android的網絡基礎。包括這個Http協議的網絡請求,JSON解析。使用
Android應用 坐標系詳細介紹
Android 應用坐標系詳解: &nb
Android 官方推薦 : DialogFragment 怎樣創建對話框
1、 概述DialogFragment在android 3.0時被引入。是一種特殊的Fragment,用於在Activity的內容之上展示一個模態的對話框。典型的用於:
安卓手機郵箱設置教程 教您如何使用手機接收郵件
一、電腦上的設置首先,想要在手機上創建你的郵箱賬戶,就得先將此賬戶在電腦上進行一定的設置,就拿QQ郵箱來說(其他郵箱同例):第一步,在電腦上登陸你的QQ郵箱