当前位置:  编程技术>移动开发
本页文章导读:
    ▪惯用的应用程序调用        常用的应用程序调用   常用的应用程序调用  intent-filter1 android.intent.action.MAIN决定应用程序最先启动的Activity。2 android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里。intent调用应用.........
    ▪ 通置market更新软件        通放market更新软件 public class hello extends Activity {/** Called when the activity is first created. */private Handler mHandler;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.l.........
    ▪ 线程:Message跟Runnable       线程:Message和Runnable 程序需要相应用户的操作,最要能在200ms(0.2s)之内,如果超过5秒没有反应,ActivityManager会没有提示就kill了 activity。然而,activity可能真的需要时间来进行处理,这.........

[1]惯用的应用程序调用
    来源: 互联网  发布时间: 2014-02-18
常用的应用程序调用

 

常用的应用程序调用 

intent-filter
1 android.intent.action.MAIN决定应用程序最先启动的Activity。
2 android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里。

intent调用应用程序
例子: 调用Google浏览器
Uri uri = Uri.parse("http://www.android123.com.cn");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);



显示web网页:

  1. Uri uri = Uri.parse("http://www.android123.com.cn");
  2. Intent it = new Intent(Intent.ACTION_VIEW,uri);
  3. startActivity(it);

显示google地图:

  1. Uri uri = Uri.parse("geo:38.899533,-77.036476");
  2. Intent it = new Intent(Intent.Action_VIEW,uri);
  3. startActivity(it);

Maps路径规划:

  1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
  2. Intent it = new Intent(Intent.ACTION_VIEW,URI);
  3. startActivity(it);

拨打电话:
1. Uri uri = Uri.parse("tel:xxxxxx");
  2. Intent it = new Intent(Intent.ACTION_DIAL, uri);  
  3. startActivity(it);  

  1. Uri uri = Uri.parse("tel.xxxxxx");
  2. Intent it =new Intent(Intent.ACTION_CALL,uri);

注意需要权限 <uses-permission id="Android.permission.CALL_PHONE" />

发送SMS/MMS

  1. Intent it = new Intent(Intent.ACTION_VIEW);
  2. it.putExtra("sms_body", "android开发网欢迎您");
  3. it.setType("vnd.android-dir/mms-sms");
  4. startActivity(it);  

发送短信

  1. Uri uri = Uri.parse("smsto:10086");
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
  3. it.putExtra("sms_body", "10086"); //正文   10086
  4. startActivity(it);  

发送彩信

  1. Uri uri = Uri.parse("content://media/external/images/media/10"); //该Uri根据实际情况修改,external代表外部存储即sdcard
  2. Intent it = new Intent(Intent.ACTION_SEND);
  3. it.putExtra("sms_body", "android123.com.cn");
  4. it.putExtra(Intent.EXTRA_STREAM, uri);
  5. it.setType("image/png");
  6. startActivity(it);


发送Email

  2. Uri uri = Uri.parse("mailto:android123@163.com");
  3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
  4. startActivity(it);

  1. Intent it = new Intent(Intent.ACTION_SEND);
  2. it.putExtra(Intent.EXTRA_EMAIL, "android123@163.com");
  3. it.putExtra(Intent.EXTRA_TEXT, "android开发网测试");
  4. it.setType("text/plain");
  5. startActivity(Intent.createChooser(it, "选择一个Email客户端"));  

  1. Intent it=new Intent(Intent.ACTION_SEND);  
  2. String[] tos={"android123@163.com"};     //发送到
  3. String[] ccs={"ophone123@163.com"};    //抄送
  4. it.putExtra(Intent.EXTRA_EMAIL, tos);  
  5. it.putExtra(Intent.EXTRA_CC, ccs);  
  6. it.putExtra(Intent.EXTRA_TEXT, "正文");  
  7. it.putExtra(Intent.EXTRA_SUBJECT, "标题");  
  8. it.setType("message/rfc822");    //编码类型
  9. startActivity(Intent.createChooser(it, "选择一个Email客户端"));

Email添加附件

  1. Intent it = new Intent(Intent.ACTION_SEND);
  2. it.putExtra(Intent.EXTRA_SUBJECT, "正文");
  3. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/nobody.mp3"); //附件为sd卡上的nobody MP3文件
  4. sendIntent.setType("audio/mp3");
  5. startActivity(Intent.createChooser(it, "选择一个Email客户端"));

播放多媒体

  1.  
  2. Intent it = new Intent(Intent.ACTION_VIEW);
  3. Uri uri = Uri.parse("file:///sdcard/nobody.mp3");
  4. it.setDataAndType(uri, "audio/mp3");
  5. startActivity(it);

  1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); //从系统内部的MediaProvider索引中调用播放
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
  3. startActivity(it);  

Uninstall卸载程序

  1. Uri uri = Uri.fromParts("package", packageName, null); //packageName为包名,比如com.android123.apkInstaller
  2. Intent it = new Intent(Intent.ACTION_DELETE, uri);
  3. startActivity(it);

   进入联系人界面

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity(intent);

 查看某个联系人,当然这里是ACTION_VIEW,如果为选择并返回action改为ACTION_PICK,当然处理intent时返回需要用到startActivityforResult

 Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, ID);//最后的ID参数为联系人Provider中的数据库BaseID,即哪一行
 Intent intent = new Intent();
 intent.setAction(Intent.ACTION_VIEW);
 intent.setData(personUri);
startActivity(intent);

 选择一个图片

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.addCategory(Intent.CATEGORY_OPENABLE); 
intent.setType("image/*");
startActivityForResult(intent, 0);

 调用Android设备的照相机,并设置拍照后存放位置

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
.getExternalStorageDirectory().getAbsolutePath()+"/cwj", android123 + ".jpg"))); //存放位置为sdcard卡上cwj文件夹,文件名为android123.jpg格式
startActivityForResult(intent, 0);

 

转自:http://blog.csdn.net/yiyaaixuexi/archive/2011/04/21/6337760.aspx

 


    
[2] 通置market更新软件
    来源: 互联网  发布时间: 2014-02-18
通放market更新软件
public class hello extends Activity {
/** Called when the activity is first created. */
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mHandler = new Handler();
SharedPreferences prefs = getPreferences(0);
long lastUpdateTime = prefs.getLong("lastUpdateTime", System.currentTimeMillis());
int curVersion = 0;
try {
curVersion = getPackageManager().getPackageInfo("linhai.com.hello", 0).versionCode;
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("DEMO",String.valueOf(curVersion));
if ((lastUpdateTime + (24 * 60 * 60 * 1000)) < System.currentTimeMillis()) {
lastUpdateTime = System.currentTimeMillis();
SharedPreferences.Editor editor = getPreferences(0).edit();
editor.putLong("lastUpdateTime", lastUpdateTime);
editor.commit();
// checkUpdate.start();
}

}
private Thread checkUpdate = new Thread(){
public void run() {
try {
URL updateURL = new URL("http://my.company.com/update");
URLConnection conn = updateURL.openConnection();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while((current = bis.read()) != -1){
baf.append((byte)current);
}


final String s = new String(baf.toByteArray());
int curVersion = getPackageManager().getPackageInfo("your.app.id", 0).versionCode;
int newVersion = Integer.valueOf(s);
if (newVersion > curVersion) {
mHandler.post(showUpdate);
}
} catch (Exception e) {
}
}
};


private Runnable showUpdate = new Runnable(){
public void run(){
new AlertDialog.Builder(hello.this).setIcon(R.drawable.ok).setTitle("Update Available")
.setMessage("An update for is available!\n\nOpen Android Market and see the details?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:your.app.id"));
startActivity(intent);
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).show();
}
};

}

    
[3] 线程:Message跟Runnable
    来源: 互联网  发布时间: 2014-02-18
线程:Message和Runnable
程序需要相应用户的操作,最要能在200ms(0.2s)之内,如果超过5秒没有反应,ActivityManager会没有提示就kill了 activity。然而,activity可能真的需要时间来进行处理,这往往会用到后台线程-background thread。后台线程可以安全 地和UI线程进行交互,其中后台线程是不能修改UI的。
通过创建一个Handler子类的对象,每个acvivity只需一个Handler对象。后台进程可通过两种方式Handler进行通信:message和Runnable对象,其结果实质都是将在Handler的队列中放入内容,message是放置信息,可以传递一些参数,Handler获取这些信息并将判度如何处理,而Runnable则是直接给出处理的方法。
这些队列中的内容(无论Message还是Runnable)可以要求马上执行,延迟一定时间执行或者指定某个时刻执行,如果将他们放置在队列头,则表示具有最高有限级别,立即执行。这些函数包括有:sendMessage(), sendMessageAtFrontOfQueue(), sendMessageAtTime(), sendMessageDelayed()以及用于在队列中加入Runnable的post(), postAtFrontOfQueue(), postAtTime(),postDelay()。
一般而言,推荐是Messge方式,这样程序设计得可以更为灵活,而Runnable在某些简单明确的方式中使用。我们将通过三种方法编写一个小例子来学习。这个例子是一个进度条,每隔1秒,进度条步进5,如果acvity停止时,进度条归零。
Android XML :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...... />
  <ProgressBar android:id="@+id/c15_progress"
       <!-- 这表明采用传统水平进度条的方式-->
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
</LinearLayout>
例子一:线程开启,采用Message传递后台线程和UI主线程之间的信息
public class Chapter15Test1 extends Activity{
    private ProgressBar bar = null;
    private boolean isRunning = false;
   
    /* 我们为这个Acivity创建一个用于和后台程序通信的handler,简单地,只要一收到message,就将progressbar进度增加5。*/
    /* 步骤1:创建Handler,并通过handleMessage()给出当收到消息是UI需要进行如何处理,例子简单不对msg的内容进行分析*/
    Handler handler= new Handler(){
        public void handleMessage (Message msg) {
            bar.incrementProgressBy(5);
        }
    };
   
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter_15_test1);
        bar=(ProgressBar)findViewById(R.id.c15_progress);
    }

    /*on Start是UI初始化并显示时调用*/
    protected void onStart() {
        super.onStart();
        bar.setProgress(0);
        /*步骤2:建立后台线程处理,采用Thread,其中run()的内容,就是线程并行处理的内容,Thread是Runnable的implements*/
        Thread background = new Thread(new Runnable(){
            public void run () {
                try{
                    for(int i = 0; i < 20 && isRunning; i ++){
                        Thread.sleep(1000);
                        /* 步骤2.1:发送Message到队列中,参数中的obtainMessage()是用于给出一个新Message,本例无参数,对应的在handler在队列中收到这条消息时,则通过handleMessage()进行处理*/
                        handler.sendMessage (handler.obtainMessage ());
                    }
                }catch(Throwable t){
                    //jest end the thread
                }
            }
           
        });
        isRunning = true;
       /*步骤3:启动线程*/
        background.start();
    }

    /*onStop是UI停止显示时调用,例如我们按了返回键*/
    protected void onStop() {
        super.onStop();
        isRunning = false;
    } 
}
例子2:采用Runnable
我们在上面的例子的基础上进行修改,如下
    /*步骤1:由于不需要处理Message,也即不需要处理handleMessage()*/
    Handler handler= new Handler();
    /*步骤1.1:定义处理动作,采用Runnable的实例,通过implements run()来定制处理,这里是简单将进度条步进5。由于我们将在Thread中使用这个实例,所以考虑采用final的方式*/
    final Runnable r = new Runnable() {
         public void run(){
            bar.incrementProgressBy(5);
         } 
    };
    /* ... ...在onStart()中的步骤2:线程的处理,和提供message不同,对于runnable方式,采用post */
        Thread background = new Thread(new Runnable(){
            public void run() {
                try{
                    for(int i = 0; i < 20 && isRunning; i ++){
                        Thread.sleep(1000);
                        handler.post(r);
                    }
                }catch(Throwable t){
                    //jest end the thread
                }
            }         
        });
        background.start();
例子3:可以用延迟处理实现定时触发,让程序更为简单
在这里例子,事实我们是进行定时的处理,利用Handler队列可以设置延期处理的方式,我们并不需要创建一个后台运行的线程,也可以实现
    Handler handler= new Handler();
   
   ... ... 在onStart() ... ...
    //利用handler.postDelayed(r,1000),在队列中加入1秒后,进行r的处理,而在r的处理中,最后在handler的队列中加入一个延迟1秒的处理,如是,就可以每隔1秒进行一次处理。
        handler.postDelayed(new Runnable() {
            public void run() {
                if(isRunning && Chapter15Test2.step < 20){
                    step ++;
                    bar.incrementProgressBy(5);
                    handler.postDelayed(this, 1000);
                }
            }        
        },1000 );

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3