我仍然在努力向外界开放我的应用程序。 起初我让一切都由MainActivity处理,但我有2个案例(添加+ del),其中无头模式更好/更快/没有闪烁等...
所以我第二次进入我的app Manifest:
<activity
android:name=".IntStringSynchro"
android:label="@string/headless"
android:theme="@android:style/Theme.NoDisplay"
>
<intent-filter>
<action android:name="ADD" />
<category android:name="android.intent.category.EMBED" />
</intent-filter>
</activity>
并在Stackoverflow上阅读,我首先在内部测试它,所以我在我的主要活动中添加了一个按钮,开始调用此活动的意图......
所以onClick中的某个地方:
else if (p1 == testBut)
{
String tstpathToProject = "AppProjects/IntStringIntentTester/app/src/main/res";
Intent callIt = new Intent(this, IntStringSynchro.class);
callIt.addCategory("android.intent.category.EMBED");
callIt.setAction("ADD");
callIt.putExtra("token", "testtoto");
callIt.putExtra("value", "titi");
callIt.putExtra("value-de", "tata");
callIt.setAction("ADD");
callIt.putExtra("path", tstpathToProject);//relative
Log.d(TAG, "sending intent " + callIt + " " + callIt.getExtras());
try
{
startActivityForResult(callIt, ASK_STRINGMOD);
}
catch (ActivityNotFoundException e)
{
Toast.makeText(this, "no available activity " + callIt, Toast.LENGTH_SHORT).show();
}
}
起到了避免作用,但当另一个应用程序试图构建该意图时,这将无效,因为它无法访问我的应用程序的类文件,因此我将相关部分更改为
Intent callIt = new Intent();
callIt.setClassName("com.nohkumado.intstringsynchro", "IntStringSynchro");
callIt.setComponent(new ComponentName("com.nohkumado.intstringsynchro", "IntStringSynchro"));
callIt.addCategory("android.intent.category.EMBED");
callIt.setAction("ADD");
etc.
但现在这会产生一个未找到活动的例外...
我有点困惑,因为似乎没有设置上下文的方法,这是我之前做的本地意图调用... 组件部分是替换第一个类型构造函数中给出的显式类实例,setClassName是setComponent的两倍,不是没用吗?
既然没有工作,我在某处遗漏了什么,但是什么? 事实上,事情是,我想从另一个应用程序进行这个意图调用......
答案 0 :(得分:0)
尝试更改setComponentName
构造函数
intent.setComponent(new ComponentName("com.package.address","com.package.address.UrActivity"));