美文网首页tasker
intent 高级篇

intent 高级篇

作者: cd2016 | 来源:发表于2015-08-12 10:52 被阅读747次

    打开QQ 并与对应QQ号聊天

    String url="mqqwpa://im/chat?chat_type=wpa&uin=12345";
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

    今天试图开发一款Apps实现跳转到某些Apps的某些intent 结果失败了 可是tasker就可以 不解

     Intent in = new Intent();
    
        ComponentName componetName = new ComponentName("com.tencent.mm", "com.tencent.mm.plugin.sns.ui.SnsCommentUI");
        in.setComponent(componetName);
        in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(in);
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dao.myintent/com.dao.myintent.MainActivity}: java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.tencent.mm/.plugin.sns.ui.SnsCommentUI } from ProcessRecord{43196d78 27266:com.dao.myintent/u0a92} (pid=27266, uid=10092) not exported from uid 10087
    

    原因在于需要在app2里面声明

     <intent-filter>
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
    

    不然就不能成功

    打开其他APP的方法

    // 通过包名获取要跳转的app,创建intent对象
    
        Intent intent = getPackageManager().getLaunchIntentForPackage("com.tencent.mm");
        // 这里如果intent为空,就说名没有安装要跳转的应用嘛
        if (intent != null) {
            // 这里跟Activity传递参数一样的嘛,不要担心怎么传递参数,还有接收参数也是跟Activity和Activity传参数一样
            intent.putExtra("key", "value");
            startActivity(intent);
        } else {
            // 没有安装要跳转的app应用,提醒一下
            Toast.makeText(getApplicationContext(), "no install!", Toast.LENGTH_LONG).show();
        }

    相关文章

      网友评论

        本文标题:intent 高级篇

        本文链接:https://www.haomeiwen.com/subject/snbiqttx.html