Android笔记

来源:互联网 发布:如何优化淘宝排名 编辑:程序博客网 时间:2024/06/06 02:46

1.android中查看是否有能够打开intent的Activity

android中查看是否有能够打开intent的Activity方式有三种(如果没有打开intent的Activity,会报错ActivityNotFound)

  1. intent的resolveActivity
  2. packagemanager的resolveActivity
  3. packagemanager的queryIntentActivities

区别:
resolveActivity返回最佳匹配的一个Activity
queryIntentActivities返回匹配的所有Activity List

具体使用代码如下

b=(Button) findViewById(R.id.to2);b.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent();            intent.setAction("com.chj.a");//              intent.setDataAndType(Uri.parse("content://xxx"), "text/plain");            if(null != intent.resolveActivity(getPackageManager())){                Log.e("chj", "target activities are: "+intent.resolveActivity(getPackageManager()));                startActivity(intent);            }else{                Toast.makeText(MainActivity.this, "Target Activity Not Found", Toast.LENGTH_SHORT).show();            }            if(null != getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)){                Log.e("chj", "target activities are: "+getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY));            }else{                Toast.makeText(MainActivity.this, "Target Activity Not Found", Toast.LENGTH_SHORT).show();            }            if(getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size()>0){                Log.e("chj", "target activities are: "+getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY));            }else{                Toast.makeText(MainActivity.this, "Target Activity Not Found", Toast.LENGTH_SHORT).show();            }        }    });

2.查看Activity堆栈信息:

adb shell dumpsys activity activities
log中Running activities附近的log

3.获取进程名称

public class MyApplication extends Application{    @Override    public void onCreate() {        super.onCreate();        Log.v("chj", "MyApplication onCreate "+getProcessName());    }    public String getProcessName(){        int pid = android.os.Process.myPid();        String processName = "";        ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);        for (ActivityManager.RunningAppProcessInfo process: manager.getRunningAppProcesses()) {            if(process.pid == pid)            {                processName = process.processName;            }        }       return processName;    }}

注意Application需要在清单文件注册android:name,否则onCreate不会执行

原创粉丝点击