您的位置:首页 > Web前端 > JavaScript

隐式调用Activity、JSON格式书写的学习

2015-01-07 16:18 169 查看
需要开发一个测试程序apk工具,要求是电脑输入命令开启APP,并且使得测试的结果为JSON格式的文本存放。思路流程:

(1)Action的隐式调用:

1、主要注意的是清单中AndroidManifest.xml中,在需要隐式调用的Activity的<intent-filter>添加 <category android:name="android.intent.category.DEFAULT" /><category android:name="myCategory"
/>,同时写好需要用到的Action,这里我用<action android:name="com..test.json" />来启动app。(也可以在代码上添加Action)

2、还需要在清单中,添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />//可写手机内存

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>//可读手机内存



(2)JSON格式的书写:需要JSONStringer这个类来添加,还有键值对来标识。例子:

{

"Type":"test",

"Result":"ok",

"Number":"1738849455",

}

java代码如下:

JSONStringer mJsonStringer=new JSONStringer();

mJsonStringer.object();//开始

mJsonStringer.key("Type");

mJsonStringer.value("test");

mJsonStringer.key("Result");

mJsonStringer.value("ok");

mJsonStringer.key("Sn");

mJsonStringer.value("1738849455");

mJsonStringer.endObject();//结束

接下来贴出代码:

1、清单AndroidManifest.xml代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.json"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.json.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                  <action android:name="com.gree.test.json" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="myCategory" />
            </intent-filter>
        </activity>
    </application>

</manifest>


2、类KeyInfo:

package com.example.json;

public class KeyInfo {
	   String sn;  
	    String type;  
	    boolean result;
	    public void setSN(String sn){
	    	this.sn=sn;
	    }
		public Object getSN() {
			
			return sn;
		}
		public void isResult(boolean result) {
			this.result=result;
		}	
		public boolean getResult(){
			return result;
		}
		public void setType(String type){
		    	this.type=type;
		    }
		public Object getType() {

			return type;
		}

}


3、类MyJsonWriter:

package com.example.json;

import java.util.ArrayList;

import org.json.JSONException;

import org.json.JSONStringer;

public class MyJsonWriter {
	private ArrayList<KeyInfo> mKeyInfos;
	private 		String  mjsonData ;
	public MyJsonWriter(ArrayList<KeyInfo> keyInfos){
		this.mKeyInfos=keyInfos;
	}
	
	public String TranstJsonData(){

		JSONStringer mJsonStringer=new JSONStringer();
	
			try {
				for(int i=0;i<mKeyInfos.size();i++){
					KeyInfo keyInfo=mKeyInfos.get(i);
				mJsonStringer.object();
				
				mJsonStringer.key("Type");
				mJsonStringer.value(keyInfo.getType());
				mJsonStringer.key("Result");
				mJsonStringer.value(keyInfo.getResult()?"ok":"failure");
				mJsonStringer.key("Sn");
				mJsonStringer.value(keyInfo.getSN());
				
				mJsonStringer.endObject();
				}
			} catch (JSONException e) {
				e.printStackTrace();
			}
	
		return mjsonData=mJsonStringer.toString();//JSON格式转换到String
	}

}


4、主代码MainActivity:



package com.example.json;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
public class MainActivity extends Activity {

	private String mString;
	private String tag="json test";
	private MyJsonWriter mMyJsonWriter;
	private KeyInfo mKeyInfo;
	private ArrayList<KeyInfo> folks ;
	private File mFile;
	private File mDir;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		folks = new ArrayList<KeyInfo>();
		mKeyInfo = new KeyInfo();
		String serialName=android.os.Build.SERIAL;
		mKeyInfo.setType("KeyTest");
		mKeyInfo.setSN(serialName);
		mKeyInfo.isResult(true);
		folks.add(mKeyInfo);
		mMyJsonWriter = new MyJsonWriter(folks);
//		String mTimeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
		mFile = new File(getDir(),"key_test_result.json");

		Log.d(tag, "----------->"+serialName);
		mString=	mMyJsonWriter.TranstJsonData();
		writeData(mString, mFile);
	}   
	private File getDir(){
		mDir = new File(Environment.getExternalStorageDirectory()+"/Json");//手机内存根目录下新建文件夹JSON
		if (mDir.exists()) {
			return mDir;
		}		else {
			mDir.mkdirs();
			return mDir;
		}
	}	
	private void writeData(String jsonData,File file) {
		try {
			//			String mJsonData=new String( jsonData.getBytes(),"UTF-8");
			BufferedReader reader=new BufferedReader(new StringReader(jsonData));//<span style="font-family: Arial, Helvetica, sans-serif;">BufferedReader缓存</span><pre name="code" class="java">jsonData内容


BufferedWriter writer=new BufferedWriter(new FileWriter(file));//BufferedReader写入内容到指定文件

int len=0;char[] buffer=new char[1024]; while((len=reader.read(buffer))!=-1){writer.write(buffer, 0, len);}writer.flush();writer.close();reader.close();} catch (IOException e) {e.printStackTrace();}}}



5、电脑输入启动测试程序的命令:adb shell am start -a com.test.json
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: